JSONの\uXXXXをデコード
TwitterAPIなどを使い、JSON形式でデータを取得した場合、文字列が次のようになっている場合があります。
初めて見ると「文字化けか」と思ってしまうかもしれませんが、これはJSONのルール通りなんだそうです。 簡単なのは次のようにJavaScriptでページに書く方法です。 これで次のように表示されます。 「json_str_decode」という関数を作ってみました。 次のようにテキストエリアなどに貼り付けて使う場合には「\\」とする必要がありません。 [ 2011年4月16日 | カテゴリー: JavaScript | タグ: JavaScript , JSON ] « Twitter APIを使い、JSON形式でツイートを取得 | jQueryでTwitterAPIを使う簡単なサンプル »
この「\uXXXX」形式は「Unicode文字エスケープシーケンス」、「unicode escape sequence」などと呼ぶそうです。
2.4.1 Unicode 文字エスケープ シーケンス (C#)
Unicodeにおける文字番号を4桁の16進数に置き換えて、頭に「\u」を付けます。
これをJavaScriptを使って人間が読める形にする方法(デコード)を調べました。
関数を使う方法
このケースでは「\」が(JavaScriptの)エスケープシーケンスに該当してしまうので「\\」のようにしないと正しく認識しません。
function json_str_decode(str){
arrs=str.match(/\\u.{4}/g);
var t="";
for(i=0;i<arrs.length;i++){
t+=String.fromCharCode(arrs[i].replace("\\u","0x"));
}
return(t);
}
<div id="mydiv"></div>
document.write(json_str_decode(a));
コメントを残す