首页 > JavaScript String.fromCharCode 的 charCode 是什么?

JavaScript String.fromCharCode 的 charCode 是什么?

在尝试找 \n 但是很奇怪, 居然不是 13, 而是 10. 另外 tab 也不一样.
这么说这个映射就不是 keyCode 那种编码了.
想问下这个 charCode 是怎么回事? 还有怎样才能找到完整的表?


首先 \r 才是 13。

其次 charCode 不是 UTF-16 而是 UCS-2,JS 诞生的时候还没出现 UTF-16,虽然现在看来都差不多了,这是 16 位的 Unicode 码。

最后,键盘的字母按键是按照 ANSI 码来的,Unicode 向下兼容 ANSI。


v8内部使用utf-16保存字符,charCode其实返回的就是一个utf-16代码单元,而es6提供的codePointAt返回的才是unicode的代码点。
注意代码点和代码单元的区别,在utf-16中的一个代码点会被编码为一个或两个代码单元(超出U+FFFF就需要两个代码单元)。
想找到完整映射,看看unicode字符表就行了,然后对于超出FFFF的字符,看看utf-16的编码方式就可以知道编码为哪两个代码单元了。


这里的charCode是ASCII编码


\n 本来就是 10 啊。13 是 \r 。tab 是 9 啊。

charCode 差不多就是 unicode,只不过只有 16 位,即 utf-16 编码值。

keyCode 是按键事件的键值,那完全是另一回事情。


可以用String.prototype.charCodeAt来获取charcode

"\n".charCodeAt(0)
//10
【热门文章】
【热门文章】