JavaScript String.fromCharCode 的 charCode 是什么?

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

阅读 9.5k
5 个回答

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

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

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

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

首先 \r 才是 13。

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

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

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

"\n".charCodeAt(0)
//10
新手上路,请多包涵

这里的charCode是ASCII编码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题