Javascript で Unicode Escape Sequence 変換

昔PHPで書いたUnicode Escapeツールを載せてましたが、今度はJavaScriptで書いたので載せます。

Unicode Escape Sequence 変換ツール

日本語などのマルチバイト文字を\uXXXX形式にUnicodeエスケープします。

こういう風にエスケープ出来ます。

ほげ → \u307b\u3052

ASCIIコード127番以上の文字だけエスケープするので、空白や改行、半角記号などはエスケープしません。
Unicodeエスケープした文字列をアンエスケープして戻す事も出来ます。

ソースですが、Escapeを行う部分はこうなってます。

var escapeUnicode = function(str) {
    var code = '';
    var head = {1: '\\u000', 2: '\\u00', 3: '\\u0', 4: '\\u'};
    return str.replace(/[^\x00-\x7F]/g, function(c) {
        return head[(code = c.charCodeAt(0).toString(16)).length] + code;
    });
};

エスケープした時に、\uXXXXの4ケタになるように、頭に0を付けて詰めてます。
また、マルチバイト文字だけエスケープして、シングルバイトの記号はエスケープしないように、ASCIIコード127以下の文字は置き替えません。正規表現[^\x00-\x7F] の部分です。
16進数の7Fは、10進数の127なので、つまり0から127に該当しない場合だけ変換します。

つづいてUnesacpeを行う部分はこうです。

var unescapeUnicode = function(str) {
  return str.replace(/\\u([a-fA-F0-9]{4})/g, function(m0, m1) {
    return String.fromCharCode(parseInt(m1, 16));
  });
};

正規表現で\uXXXXを表すと\\u([a-fA-F0-9]{4})なので、このパターンに一致する部分を変換する、という仕組みです。