Unicode值\uxxx到Javascript中的字符

Unicode值\uxxx到Javascript中的字符,javascript,encoding,character-encoding,string-decoding,Javascript,Encoding,Character Encoding,String Decoding,我以前从未这样做过,也不知道为什么它会输出臭名昭著的�编码字符。关于如何输出字符(ASCII+Unicode)有什么想法吗?我认为\u0041-\u005A应该用UTF-8打印A-Z,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--;)

我以前从未这样做过,也不知道为什么它会输出臭名昭著的
编码字符。关于如何输出字符(ASCII+Unicode)有什么想法吗?我认为
\u0041
-
\u005A
应该用UTF-8打印
A-Z
,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);
var c=新数组(“F”、“E”、“D”、“c”、“B”、“A”、9,8,7,6,5,4,3,2,1,0”);
var n=0;
var d=“”;
var o=“”;
对于(变量i=16;i--;){
对于(var j=16;j--;){
对于(变量k=16;k--;){
对于(变量l=16;l--;){
d=c[i].toString()
+c[j].toString()
+c[k].toString()
+c[l].toString();
o++=(++n+”:“
+d+“=”
+String.fromCharCode(“\\u”+d)
+“\n
”; 如果(n>=500){i=j=k=l=0;}//提前停止 } } } } 文件。编写(o);
函数
.fromCharCode()
接受一个数字,而不是字符串。你不能把一个字符串放在一起,然后期望解析器做你认为它会做的事情;这不是语言的工作方式

您可以使用ammend代码从十六进制数字生成一个字符串(不带“\u”),然后调用

var n = parseInt(hexString, 16);

以获取值。然后可以使用该值调用
.fromCharCode()

如果要使用
\unnn
语法创建字符,必须在代码中的文字字符串中执行此操作。如果要动态执行,必须在运行时计算的文本字符串中执行:

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);
var hex=“0123456789ABCDEF”;
var s=“”;
对于(var i=65;i>4;
var lo=i%16;
var code=“'\\u00”+hex[hi]+hex[lo]+”;
var char=评估(代码);
s+=char;
}
文件。书写;

当然,只需使用
String.fromCharCode(i)
会容易得多…

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

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

使用,和

我回家后必须尝试。出于某种原因,我记得有人构建了一个字符串并在其上使用了fromCharCode。因此基本上,
\u
只在开放代码中需要,
fromCharCode
将整数转换为unicode字符,而不仅仅是ASCII字符。我尝试使用eval形式,但没有工作;我真的不记得我做了什么。可能是因为当时我在控制台上打印。我看到你做的是65到90的范围;有没有这个范围?-就像我说的,我想看到的不仅仅是ASCII码,我想它停在255。为什么否决票?如果你不解释你认为是错的,它无法改进答案@vol7ron:是的,我想你两年前就投了,但昨天有人投了反对票。在这种情况下,有一个
不应该是最好的答案(第二个)