JavaScript String.fromCharCode 的 charCode 是什么?


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

编码 JavaScript

zErgA26 10 years, 2 months ago

这里的charCode是ASCII编码

H-ero answered 10 years, 2 months ago

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


 "\n".charCodeAt(0)
//10

zaqqww answered 10 years, 2 months ago

首先 \r 才是 13。

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

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

天然呆专萌 answered 10 years, 2 months ago

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

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

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

体外预应力 answered 10 years, 2 months ago

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

gissac3 answered 10 years, 2 months ago

Your Answer