前言
好记性不如烂笔头
正文
ANSI
ANSI字符串,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件
Unicode
Unicode字符串每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾。
NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wchar_t; 所以我们有时常会见到什么char无法转换为unsigned short之类的错误,其实就是unicode。
Unicode little endian
最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。
最低位字节放最前面。
Unicode big endian
最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。
最高位字节放最前面。
UTF8
UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,老外觉得这种存储方式太浪费,因为浪费了50%的空间,于是就把英文压缩成1个字节,成了utf8编码,但是汉字在utf8中占3个字节,显然用做中文不如ANSI合算。
签名BOM
BOM 是 Byte Order Mark 的缩写(字节顺序标记),是编码方案里用于标识编码的标准标记。
ANSI 文件没有 BOM
UTF-8 文件的 BOM 为:EF BB BF,不过 UTF-8 文件可以有 BOM,也可以没有 BOM
Unicode big endian 文件的 BOM 为:FE FF
Unicode little endian 文件的 BOM 为:FF FE
参考文章
© 版权声明