原文链接:http://hexo.liferecords.top/post/3147335795.html
点击原文阅读,体验更加
引言
C++的项目,字符编码是一个大坑,不同平台之间的编码往往不一样,如果不同编码格式用一套字符读取格式读取就会出现乱码。因此,一般都是转化成UTF-8这种平台通用,且支持性很好的编码格式。
字符编码知识
先简单介绍一下Unicode、UTF-8、ANSI之间的概念。
-
Unicode:国际通用编码,使用两个字节表示一个字符,可以表示世界上任何文字和符号。
Unicode只是一个符号集, 它只规定了符号的二进制代码, 却没有规定这个二进制代码应该如何存储。
-
UTF-8:UTF-8是Unicode实现方式之一。
可变长度编码,可以表示Unicode标准中的任何一个字符,且编码中第一个字节与ASCII兼容,UTF-8中英文占一个字符,即英文字符编码结果相同
中文因为需要三个字节,与ASCII码不同,故有乱码 -
ANSI:本地码,与系统的默认编码相关
中文windows: GBK
英文windows: ASICII
繁体windows: BIG5
- GB2312/BIG5:中国制定的编码规范
GB2312: 简体中文
BIG5: 繁体中文
GBK: 亚洲双字节字符统一的编码格式,兼容所有平台
下面通过C++检测字符编码中提到的在线查字符编码,得到下表
字符 | GB2312 | Unicode | UTF-8 | GBK |
---|---|---|---|---|
中 | D6D0 | 00004E2D | E4B8AD | D6D0 |