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

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

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

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

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

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

終わり。

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

        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)

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

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

余談で、

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

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

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

コメントを残す

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