搜索找到这样一段代码
function test(){
var c="";
for(var i=1;i<65536;i++){
if((i%10)==0){
c+=i+':\t'+String.fromCharCode(i)+'\t'+'\n';
} else {
c+=i+':\t'+String.fromCharCode(i)+'\t';}
}
document.write(String.fromCharCode(i));
}
else 上下也没有什么不一样的, 为什么可以转 127 之后?
1
lonelinsky 2017-10-18 15:16:44 +08:00
多谢 lz,顺便去开了下眼界。
lz 贴的代码的最后一行应该是写错了,应该是 document.write(c); 首先这个问题直接查 fromCharCode 的文档就可以得到答案了,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode 可以看到 fromCharCode 接受的参数是一个 unicode 值,处理 127 以后当然没问题啦。 开眼界的地方在于后续查了 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint 然后看到现在 Unicode 已经是 U+0000-U+U+10FFFF 了,然后对于大于 U+FFFF 的是使用 UTF-16 surrogate pairs 来实现的,然后再 js 里面就会出现只有一个字符的字符串,但是字符串长度是 2 的情况… |