UTF-8

UTF-8

无论是UTF-16/32还是UCS-2/4,一个字符都需要多个字节来编码。

在UTF-8编码中,ASCII码中的字符还是ASCII码的值,只需要一个字节表示,其余的字符需要2字节、3字节或4字节来表示。

UTF-8的编码规则:

(1) 对于ASCII码中的符号,使用单字节编码,其编码值与ASCII值相同。其中ASCII值的范围为0~0x7F,所有编码的二进制值中第一位为0(这个正好可以用来区分单字节编码和多字节编码)。

(2) 其它字符用多个字节来编码(假设用N个字节),多字节编码需满足:第一个字节的前N位都为1,第N+1位为0,后面N-1 个字节的前两位都为10,这N个字节中其余位全部用来存储Unicode中的码位值。

字节数 Unicode UTF-8编码
1 000000-00007F 0xxxxxxx
2 000080-0007FF 110xxxxx 10xxxxxx
3 000800-00FFFF 1110xxxx 10xxxxxx 10xxxxxx
4 010000-10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

区别

(1) 简单地说:Unicode属于字符集,不属于编码,UTF-8、UTF-16等是针对Unicode字符集的编码。

(2) UTF-8、UTF-16、UTF-32、UCS-2、UCS-4对比:

对比 UTF-8 UTF-16 UTF-32 UCS-2 UCS-4
编码空间 0-10FFFF 0-10FFFF 0-10FFFF 0-FFFF 0-7FFFFFFF
最少编码字节数 1 2 4 2 4
最多编码字节数 4 4 4 2 4
是否依赖字节序

UTF-8 BOM

UTF-8 BOM(Byte Order Mark)是一个特殊的字符序列,用于表示文本文件使用 UTF-8 编码。BOM 本身是可选的,在 UTF-8 中并不影响文本内容的实际表示,但它可以在文件的开头插入一个特定的字节序列 EF BB BF,作为文件的编码标识符,一般windows比较常用。

vim下,使用命令 :set nobomb 来去除 BOM防止在php,html中的影响

 

posted on 2024-12-30 10:42  sudochen  阅读(66)  评论(0)    收藏  举报

导航