12
4

3 に答える 3

22

この.fromCharCode()関数は、文字列ではなく数値を取ります。そのような文字列をまとめて、パーサーが自分の思ったとおりに実行することを期待することはできません。それは言語が機能する方法ではありません。

コードを修正して、16 進数から文字列 (「\u」なし) を作成し、

var n = parseInt(hexString, 16);

値を取得します。.fromCharCode()次に、その値で呼び出すことができます。

于 2010-09-30T22:41:36.517 に答える
10

テキスト内のすべての Unicode エンコードされた特殊文字を置き換えるための便利なスニペットは次のとおりです。

var rawText = unicodeEncodedText.replace(
                  /\\u([0-9a-f]{4})/g, 
                  function (whole, group1) {
                      return String.fromCharCode(parseInt(group1, 16));
                  }
              );

replacefromCharCodeおよび_parseInt

于 2013-06-30T21:52:31.427 に答える
3

\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)するだけではるかに簡単になります...

于 2010-09-30T23:24:12.273 に答える