我已经尝试过了,但是不确定是否正确:
> parseInt('E01ED', 16).toString(10)
'917997'
> String.fromCharCode(917997)
'ǭ'
与here看起来不一样。
我从这里得到了十六进制值:
E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
另一个可能是:
005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
使用:
> parseInt('005B', 16).toString(10)
'91'
> String.fromCharCode(91)
'['
这看起来是正确的,所以主要是仔细检查。
答案 0 :(得分:1)
String.fromCharCode
使用UTF-16代码单元,而不是代码点-可以说是历史错误。请改用String.fromCodePoint
:
console.log(String.fromCharCode(0xe01ed));
console.log(String.fromCodePoint(0xe01ed));
如果您需要对较旧环境的支持,则必须自己进行翻译(或使用软件包或类似工具):
function fromCodePoint(codePoint) {
if (codePoint < 0x10000) {
return String.fromCharCode(codePoint);
}
codePoint -= 0x10000;
var leadSurrogate = (codePoint >>> 10) + 0xd800;
var trailSurrogate = (codePoint & 0x3ff) + 0xdc00;
return String.fromCharCode(leadSurrogate, trailSurrogate);
}