Unicode 値 \uXXXX を Javascript の文字に変換
-
26-09-2019 - |
質問
これまでにこれを行ったことがなく、なぜ悪名高いものを出力するのかわかりません �
エンコーディング文字。文字を適切に出力する方法 (ASCII+Unicode) について何かアイデアはありますか?私は思う \u0041
-\u005A
印刷する必要があります A-Z
UTF-8 で、Firefox が報告しているページのエンコーディングです。
var c = new Array("F","E","D","C","B","A",9,8,7,6,5,4,3,2,1,0);
var n = 0;
var d = "";
var o = "";
for (var i=16;i--;){
for (var j=16;j--;){
for (var k=16;k--;){
for (var l=16;l--;){
d = c[i].toString()
+ c[j].toString()
+ c[k].toString()
+ c[l].toString();
o += ( ++n + ": "
+ d + " = "
+ String.fromCharCode("\\u" + d)
+ "\n<br />" );
if(n>=500){i=j=k=l=0;} // stop early
}
}
}
}
document.write(o);
解決
.fromCharCode()
関数は、数値ではなく文字列を取ります。あなたが一緒にそのような文字列を入れて、あなたがそれをやると思う何をすべきかパーサを期待することはできません。それは言語の作品だけではない方法です。
あなたが進数、およびコール
から(なし「\ U」)文字列を作るためにあなたのコードをammendことができvar n = parseInt(hexString, 16);
値を取得するには、。そして、あなたは、のことの値と.fromCharCode()
を呼び出すことができます。
他のヒント
テキスト内のすべての Unicode エンコードされた特殊文字を置き換える便利なスニペットは次のとおりです。
var rawText = unicodeEncodedText.replace(
/\\u([0-9a-f]{4})/g,
function (whole, group1) {
return String.fromCharCode(parseInt(group1, 16));
}
);
使用する replace
, fromCharCode
そして parseInt
あなたが文字を作成するために
\unnnn
構文を使用したい場合は、、あなたは、コード内の文字列リテラルでそれを行う必要があります。あなたが動的にそれをしたい場合は、実行時に評価されるリテラル文字列でそれをしなければならない。
var hex = "0123456789ABCDEF";
var s = "";
for (var i = 65; i <= 90; i++) {
var hi = i >> 4;
var lo = i % 16;
var code = "'\\u00" + hex[hi] + hex[lo] + "'";
var char = eval(code);
s += char;
}
document.write(s);
もちろん、ただString.fromCharCode(i)
を使用すると、非常に簡単になります...
所属していません StackOverflow