VB.netでユニコードエスケープ(u~)を読めるようにしてみる

よくJSONなどで使われてる
「u5143u6c17u3067u3059u304buff1fuff01」
こんな奴。

ニコ動のAPIでエラーで帰ってる奴にこれが使われてたので、頑張って調べた結果…

分からなかった!(´・ω・`)

なので、5zjさんに教えてもらいましたw
コード

1
2
3
4
'u3042(あ)からuを抜いた文字列を入れる
Dim hoge As String = "3042"
Dim intData As Integer = Convert.ToInt32(hoge, 16)
Dim mozi As String = ChrW(intData)

終わり。

次は長い文字列から直してみる
作り方は簡単!文字列をuで区切ればいいだけ!
で、こうなった

1
2
3
4
5
6
7
8
9
10
11
12
13
Dim mes As String = ""
Dim txt As String = "u5143u6c17u3067u3059u304buff1fuff01"
Dim stArrayData As String() = Split(txt, "u")
 
For Each stData As String In stArrayData
    If stData.Length = 4 Then
        Dim intData As Integer = Convert.ToInt32(stData, 16)
        Dim mozi As String = ChrW(intData)
        'Console.WriteLine(mozi)
        mes = mes & mozi
    End If
Next
Console.WriteLine(mes)

実行すると、「元気ですか?!」って出てきてくるはずです。

出てきたら、終わりです。ありがとうございました。

余談で、

1
Dim hoge As String() = txt.Split(CChar("u"))

1
Dim hoge As String() = Split(txt, "u")

で結果が違った…気づくのに結構時間が掛かった…orz

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です