- ベストアンサー
VB.net・JavaScriptエンコードについて
- JavaScriptのエンコード方法や参考ページについての質問です。
- 特定の文字列をJavaScriptの書式に変換する方法について調べています。
- 自分で検索してもうまく結果が得られないので、アドバイスを頂きたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
"\u30e2\u30f3\u30b9\u30bf\u30fc" はUTF-8の文字コード(数値参照(16進数))のユニコード表記です。 30e2:モ 30f3:ン 30b9:ス 30fc:タ 参考 http://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF javascriptだと、 string.charCodeAt(n) で取得できます。 for(var i=0;i<4;i++){ var str+="モンスタ".charCodeAt(i) } alert(str); => \u30e2\u30f3\u30b9\u30bf\u30fc のはず
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
大きく二つの方法があります。 参考URLは半角だけそのまま出力されてますので、半角はそのまま表示する仕組みに変更してあります。 ------------------------------------------- ※UTF-16 Big Endianエンコードを利用する方法 ------------------------------------------- Function ConvJS1(ByVal in文字列 As String) As String Dim ret As String = "" Dim ec As System.Text.Encoding = System.Text.Encoding.BigEndianUnicode Dim bytesData As Byte() = ec.GetBytes(in文字列) For i As Integer = 1 To bytesData.Length Step 2 Dim byt(1) As Byte Array.Copy(bytesData, i - 1, byt, 0, 2) If (byt(0) = 0) Then ret &= ec.GetString(byt) Else ret &= "\u" & Hex((CInt(byt(0)) << 8) Or CInt(byt(1))).ToLower() End If Next Return ret End Function ------------------------------ ※AscWを利用する方法 ------------------------------ Function ConvJS2(ByVal in文字列 As String) As String Dim ret As String = "" For Each c As Char In in文字列.ToCharArray() Dim s As String = c.ToString() Dim h As Integer = AscW(s) If (h < &HFF) Then ret &= s Else ret &= "\u" & Hex(h).ToLower() End If Next Return ret End Function
お礼
ご回答ありがとうございました!! タッチの差で1050YENさんのご回答を確認する前に、 最初に回答いただいたyyr446さんへベストアンサーとさせていただきましたが VBのコードもご提示いただき、当方としては実質ベストアンサーです!! お陰さまで、問題は解決しそうです。 ありがとうございました!!
お礼
ご回答ありがとうございました!! 16進数だったのですね。 かなりのヒントになったので調べましたところ Dim data As Byte() = Encoding.Unicode.GetBytes("モンスター") にて望む表記が得られそうです。 ありがとうございました。