js常见编码解码

JavaScript07

js常见编码解码,第1张

将每一个字节表示的十六进制表示的内容,用字符串来显示。

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查看