将每一个字节表示的十六进制表示的内容,用字符串来显示。
UTF(UCS Transformation Format)规范,常见的UTF规范包括UTF-8、UTF-7、UTF-16
使用2个字节表示已经有码点的字符。UCS-2只是一个编码方案,UTF-16却要用于实际的传输
UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码
js使用的编码
中日韩统一表意文字
每个汉字由两个字节构成
是针对繁体汉字的汉字编码,台湾地区常用,共收录13,060个汉字
该函数能解码由创建或其它流程得到的统一资源标识符(URI)。
方法用于解码由方法或者其它类似方法编码的部分统一资源标识符(URI)。
escape生成新的由十六进制转义序列替换的字符串
计算生成一个新的字符串,其中的十六进制转义序列将被其表示的字符替换。
emoji的表情的长度竟然是2???
究其原因要从es的字符集和编码方式谈起
JS的语言采用Unicode字符集,但是只支持一种编码方式
但是JS采用的编码方式既不是UTF8也不是UTF16,更不是UTF32,而是UCS-2
这要从ES的诞生时间线说起:
1.1988年Unicode团队成立(指字符集)
2.次年1989年UCS团队成立(指字符集)
3.1990,UCS-2编码发布(指编码方式)
4.1991年两者合并字符集为Unicode(合并字符集)
5.1995Js诞生
6.1996UTF-16发布,取代UCS-2(指编码方式)
也就是说JS语言诞生的时候 还没有UTF16编码 !!
上述概括:
在Unicode中,最前面的65536个字符(包括最常见的所有字符)称为基本平面(BMP),码点(16进制)从U+0000---U+FFFF,目前共有17个平面,剩下的称为辅助平面(SMP)(U+010000到U+10FFFF)
UTF-16:当在BMP范围内的字符编码为2个字节,SMP为4个字节
UCS-2:全部二个字节,一视同仁
那么问题来了?超过2个字节的怎么处理
既然不属于UCS-2,那就当两个字符来看喽~~
再回来看刚开始提出的问题
我们使用 charCodeAt查看