JavaScript中codePointAt与fromCodePoint输出不一致问题咨询
问题解析
你遇到的是视觉渲染混淆导致的误解:
String.fromCodePoint(1)生成的是Unicode码点U+0001(标题开始控制字符,SOH),这个字符本身不可见,大部分终端/浏览器会用☺作为替代渲染符号,但它的真实码点还是1。- 你直接写的
'☺'是Unicode码点U+263A(白色笑脸符号),这个是标准的可见表情字符,十进制码点就是9786。
验证代码:
// 生成U+0001,渲染为☺ console.log(String.fromCodePoint(1)); // 输出真实码点1 console.log(String.fromCodePoint(1).codePointAt(0)); // 输出U+263A的码点9786 console.log('☺'.codePointAt(0));
本质是:两个字符视觉显示相同,但实际是完全不同的Unicode字符,码点自然不一样。
内容的提问来源于stack exchange,提问作者SIXIMPALA
相关产品推荐
相关产品推荐

