ASCII字符集:8位表示一个字符,这个都不陌生。
下面主要讲UTF-8、UTF-16BE、UTF-16LE之间的区别
这3种编码都属于Unicode编码方式。
- UTF-8的特点是对不同范围的字符使用不同长度的编码
Unicode编码(16进制) UTF-8 字节流(二进制) 000000 - 00007F 0xxxxxxx 000080 - 0007FF 110xxxxx 10xxxxxx 000800 - 00FFFF 1110xxxx 10xxxxxx 10xxxxxx 010000 - 10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。从上表可以看出,4字节模板有21个x,即可以容纳21位二进制数字。
2. UTF-16BE :16位表示一个字符,以大端方式存放
3. UTF-16LE : 16位表示一个字符,以小端方式存放
大端与小端的区别:以字符 ‘a’ 为例,‘a’ 的编码为[0x61]
UTF-8方式下:[0x61]
UTF-16BE(即大端方式):[0x00 0x61] 大端方式符合人们的习惯
UTF-16LE(即小端方式):[0x61 0x00] 小端方式利于计算机操作
在UCS 编码中有一个叫做 "Zero Width No-Break Space" ,中文译名作“零宽无间断间隔”的字符,又被称作 BOM
打开txt文件,在文件开头就有这个字符标记,如下图所示
文件内容为“abc\n区别"这个字符序列
ASCII、UTF-8、UTF-16BE、UTF-16LE四种编码方式分别如下:
可以看到 UTF-8编码以 EF BB BF 开头
UTF-16BE编码以FE FF 开头
UTF-16LE编码以FF FE 开头
UTF-8编码方式对不同范围的字符用不同长度的位数编码以及大端与小端的区别。