Unicode与UTF-8
Unicode
是一种字符编码标准,使用4个字节表示一个字符
- 优点:支持世界上所有的字符
- 缺点:浪费空间,且不易与其它编码区分
Unicode中 “微” 字编码:
UTF-8
是unicode的一种实现,还有UTF-16等其它实现。UTF-8遵循以下规则:
对于单字节字符,字节的第一位为0,后7位为这个符号的Unicode码,所以对于拉丁字母,UTF-8与ASCII码是一致的。
对于n字节(n>1)的字符,第一个字节前n位都设为1,第n+1位为0,后面字节的前两位一律设为10,剩下没有提及的位,全部为这个符号的Unicode编码。
UTF-8中 “微” 字编码:
其中:
黄色部分代表长度,表示该编码使用3个字节
灰色部分为长度与数据的分割符
绿色部分为非首字节的标识符
红色部分,蓝色部分为数据部分
常见问题
1. Windows Notepad中的编码ANSI保存选项,代表什么含义?
ANSI是Windows的默认的编码方式,对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对Windows简体中文版,如果是繁体中文版会采用Big5码)。所以,如果将一个UTF-8编码的文件,另存为ANSI的方式,对于中文部分会产生乱码。
2. 什么是UTF-8的BOM?
BOM的全称是Byte Order Mark,BOM是微软给UTF-8编码加上的,用于标识文件使用的是UTF-8编码,即在UTF-8编码的文件起始位置,加入三个字节“EE BB BF”。这是微软特有的,标准并不推荐包含BOM的方式。采用加BOM的UTF-8编码文件,对于一些只支持标准UTF-8编码的环境,可能导致问题。比如,在Go语言编程中,对于包含BOM的代码文件,会导致编译出错