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:是的,我想你两年前就投了,但昨天有人投了反对票。在这种情况下,有一个;
不应该是最好的答案(第二个)