JavaScriptでユニコードをデコードする関数

ユニコードは「\uXXXX」の形式で表されます。
例えば「都」は「\u90fd」になります。
JSONは文字列をユニコードで表します。

例えばこのようになります。

{
"\u90fd\u9053\u5e9c\u770c":"\u5317\u6d77\u9053",
"\u59d3":"\u77f3\u5ddd",
"\u540d":"\u7ae0",
"\u6027\u5225":"\u7537"
}

このユニコードを通常の文字に変換(デコード)するJavaScriptの関数を考えました。

function decode_unicode(src) {
  // 変数宣言
  const regex = /\\u.{4}/ig;
  const replacementFunction = (all) => {
    // Unicodeエスケープシーケンスを16進数に変換
    const hexCode = all.replace("\\u", "0x");
    // 16進数コードから文字を取得
    return String.fromCharCode(parseInt(hexCode, 16));
  };
  // 正規表現でマッチした部分文字列を置換
  const result = src.replace(regex, replacementFunction);
  // 結果を返す
  return result;
}

これを使うと先程の文字列が次のようになります。

{
"都道府県":"北海道",
"姓":"石川",
"名":"章",
"性別":"男"
}

次のページで試すことができます。

コメント

タイトルとURLをコピーしました