投稿

オブジェクトをJSON文字列(UNICODE)に変換する

オブジェクトをJSON文字列(UNICODE)に変換する

JSON.stringify はマルチバイト文字をそのままUTF-8で出力するため、\uXXXX 形式のUnicodeエスケープが必要な場面(他システムとの文字列比較、ログ出力の統一など)では追加の変換が要る。このコードは JSON.stringify の結果を1文字ずつ走査し、ASCII範囲外の文字だけを \uXXXX に置き換える。

var obj = {"key":"ü"};
var str1 = JSON.stringify(obj);
var str2 = "";
var chr = "";
for(var i = 0; i < str1.length; i++){
    if (str1[i].match(/[^\x00-\x7F]/)){
        chr = "\\u" + ("000" + str1[i].charCodeAt(0).toString(16)).substr(-4);
    }else{
        chr = str1[i];
    }
    str2 = str2 + chr;
}  
console.log(str2); 

>>{"key":"\u00fc"}

javascript - JSON.stringify and unicode characters - Stack Overflow