Javascript中的Unicode值\ uXXXX到字符

vol*_*ron 12 javascript encoding character-encoding string-decoding

我以前从未这样做过,也不确定为什么输出臭名昭着的?编码字符.关于如何输出字符的任何想法(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);
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 21

.fromCharCode()函数采用数字,而不是字符串.你不能把这样的字符串放在一起,并期望解析器做你认为它会做的事情; 这不是语言的工作方式.

你可以修改你的代码,从你的十六进制数字中创建一个字符串(不带'\ u'),然后调用

var n = parseInt(hexString, 16);
Run Code Online (Sandbox Code Playgroud)

获得价值.然后你可以.fromCharCode()使用值调用.


Mat*_*yas 10

替换文本中所有unicode编码的特殊字符的有用代码段是:

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

使用replace,fromCharCodeparseInt