2.3 KiB
2.3 KiB
测试C++字符串在GBK环境下的乱码情况
当然可以将终端编码类型改为UTF-8
来实现通用情况,但是更多的情况下,windows
终端因为各种原因只能使用GBK
的环境不能更改他的编码,因此有此测试,当然测试也可能包含输出不为GBK
的情况用于参考或者记录。
注: 源码编码统一为UTF-8
,如果是MSVC
均为使用/source-charset:utf-8
实现输出为GBK
。
std::string
可用性 | 编译器 | 是否使用了u8 | 测试环境 | 源码编码 | 输出编码 | 控制台编码/是否乱码 | 调试器是否乱码 |
---|---|---|---|---|---|---|---|
MinGW64 | 否 | VSCode | UTF-8 | GBK | GBK,正常 | 不识别其内容是\326 形式 |
|
MinGW64 | 否 | VSCode | UTF-8 | UTF-8 | GBK,乱码 | 正常 | |
MinGW64 | 是 | VSCode | UTF-8 | UTF-8 | GBK,乱码 | 正常 | |
√ | MSVC | 否 | VSCode | UTF-8 | GBK | GBK,正常 | 正常 |
MSVC | 是 | QtCreator | UTF-8 | GBK | GBK,乱码 | 正常 | |
MSVC | 否 | QtCreator | UTF-8 | GBK | GBK,正常 | 乱码 |
QString
Qt6
删除库配置中的-utf-8
选项才行,否则输出为UTF-8
。
可用性 | 编译器 | 是否使用了u8 | 测试环境 | 源码编码 | 输出编码 | 控制台编码/是否乱码 | 调试器是否乱码 |
---|---|---|---|---|---|---|---|
√ | MSVC | 是 | VSCode | UTF-8 | GBK | GBK,正常 | 正常 |
√ | MSVC | 是 | QtCreator | UTF-8 | GBK | GBK,正常 | 正常 |
MSVC | 否 | QtCreator | UTF-8 | GBK | GBK,乱码 | 乱码 | |
MSVC | 否 | VSCode | UTF-8 | GBK | GBK,乱码 | 乱码 |