理解ASCII,Unicode,UTF-8,wchar,char
字符编码笔记:ASCII,Unicode 和 UTF-8
各种编码在线转换工具
总结
一、ASCII 码
只有128个,只占用了一个字节的后面7位,最前面的一位统一规定为0(01000000-01111111)
二、非 ASCII 编码
不同的国家有不同的字母,有256个,占用了一个完整的字节八位(00000000-11111111)
三、 Unicode
Unicode 是一个很大的集合,现在的规模可以容纳100多万个符号,但存在字节浪费问题。比如,汉字严的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。
四、UTF-8
UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
五、GB2312
GB2312-80GB 2312 或 GB 2312-80 是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称 GB 0,由中国国家标准总局发布,1981 年 5 月 1 日实施。GB 2312 编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持 GB 2312
六、GBK
GBK 即汉字内码扩展规范,K 为汉语拼音 Kuo Zhan(扩展)中“扩”字的声母。英文全称 Chinese Internal Code Specification。GBK 共收入 21886 个汉字和图形符号,包括:
- GB 2312 中的全部汉字、非汉字符号。
- BIG5 中的全部汉字。
- 与 ISO 10646 相应的国家标准 GB 13000 中的其它 CJK 汉字,以上合计 20902 个汉字。
- 其它汉字、部首、符号,共计 984 个。
七、GB18030
GB 18030,全称:国家标准 GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集,是 GB 18030-2000《信息技术信息交换用汉字编码字符集基本集的扩充》的修订版。GB 18030 与 GB 2312-1980 和 GBK 兼容,共收录汉字70244个。
GB 18030 编码是一二四字节变长编码。单字节,其值从 0 到 0x7F,与 ASCII 编码兼容。双字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括0x7F),与 GBK 标准兼容。四字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节从0x81 到 0xFE,第四个字节从 0x30 到 0x39。
八、char
char 是 8 位类型,只能存储单字节字符,例如ASCII 码,单字节UTF-8,单字节Unicode,无法存放中文,中文为双字节字符,例如:char code = L'a';
九、wchar
wchar 是 一个 16 位宽字符,用于存储编码为 UTF-16LE 的 Unicode,可以存储中文,例如:wchar_t chineseChar = L'中';
十、ttf字体文件
二进制格式存放的字体,其中包括字体的格式与其对应的Unicode