質問

これまでにこれを行ったことがなく、なぜ悪名高いものを出力するのかわかりません エンコーディング文字。文字を適切に出力する方法 (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)を使用すると、非常に簡単になります...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top