代码之家  ›  专栏  ›  技术社区  ›  vol7ron

Unicode值\uxxxx到javascript中的字符

  •  12
  • vol7ron  · 技术社区  · 14 年前

    我以前从来没有这样做过,也不知道为什么会输出臭名昭著的 � 编码字符。有关于如何输出字符的想法吗(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);
    
    3 回复  |  直到 9 年前
        1
  •  21
  •   Pointy    14 年前

    这个 .fromCharCode() 函数接受的是数字,而不是字符串。您不能将这样的字符串组合在一起,期望解析器做您认为它会做的事情;这不是语言的工作方式。

    你可以修改你的代码,从你的十六进制数中生成一个字符串(没有'\u'),然后调用

    var n = parseInt(hexString, 16);
    

    获取值。然后你可以打电话 .fromCharcode()。 具有 那个 价值。

        2
  •  8
  •   Matyas    9 年前

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

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

    使用 replace , fromCharCode parseInt

        3
  •  4
  •   Guffa    14 年前

    如果你想使用 \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) 会更容易…