28 lines
2.3 KiB
Markdown
28 lines
2.3 KiB
Markdown
|
|
# 测试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,乱码 | 乱码 | |