在尝试找 \n
但是很奇怪, 居然不是 13, 而是 10. 另外 tab 也不一样.
这么说这个映射就不是 keyCode 那种编码了.
想问下这个 charCode 是怎么回事? 还有怎样才能找到完整的表?
在尝试找 \n
但是很奇怪, 居然不是 13, 而是 10. 另外 tab 也不一样.
这么说这个映射就不是 keyCode 那种编码了.
想问下这个 charCode 是怎么回事? 还有怎样才能找到完整的表?
\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。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
v8内部使用utf-16保存字符,charCode其实返回的就是一个utf-16代码单元,而es6提供的codePointAt返回的才是unicode的代码点。
注意代码点和代码单元的区别,在utf-16中的一个代码点会被编码为一个或两个代码单元(超出U+FFFF就需要两个代码单元)。
想找到完整映射,看看unicode字符表就行了,然后对于超出FFFF的字符,看看utf-16的编码方式就可以知道编码为哪两个代码单元了。