1.GBK是中国标准,每个汉字2个字节
2.Unicode是国际标准,每个汉字分配一个unicode编码。
3.unicode的编码实现有多种表示形式,比如UTF-8,UTF-16…。UTF-8有的汉字是3个字节。
4.定义 const char m[] = “你好”; 时,"你好"所占的字节与cpp文件的格式(GBK,UTF-8,UTF-16…)有关。
例如string s = “你好”;
默认这里是GBK,s.size() = 4
如果把文件格式改成UTF-8,则每个汉字为3个字节,s.size() = 6
5.定义 const wchar_t n[] = L"你好";时,采用的是宽字符,在vs2019下验证实际为utf-16,与cpp文件格式无关。
6. const char16_t p[] = u"你好"; 也是utf-16。见上。
7.利用cout输出汉字到控制台时,控制台默认是支持GBK的,如果cout输出UTF-8则有乱码。
通过修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor,添加一个autorun项,值为chcp 65001。可以让控制台输出UTF-8。
8.wcout输出的是 宽字符。