cmake项目中文乱码

一个cmake的项目系统,出现中文乱码
初学cmake,本来程序没有乱码,按教程下载扩展改成UTF-8编码,之后运行不知道怎么的中文就乱码了

img

以下是所作的更改

img

img

img

img


项目的属性如上图所示无法打开,改不了项目的属性

别人的教程不见得就是正确的,建议自己理解清楚文件编码、控制台编码:

【文件编码】
ANSI(中文系统=GBK/GB2312)
UTF8不带BOM
UTF8带BOM

【控制台编码】
默认:ANSI
chcp 65001 命令可设置控制台编码为UTF8
SetConsoleOutputCP(65001) 可设置控制台编码为UTF8
WriteConsoleW 以宽字符输出,无论控制台编码是啥,都能正常打印中文

【编码转换】
WideCharToMultiByte
MultiByteToWideChar

【正确做法】
文件保存UTF8的,用MultiByteToWideChar转换,再用WriteConsoleW打印输出
(可以封装一下函数,例如实现printf_utf8,然后#define printf printf_utf8,这样替换函数方便写代码)
或着
你自己理解清楚编码,让文件和打印输出保持一致的编码就行。

对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A

该回答引用ChatGPT
根据您提供的信息,可以尝试以下步骤解决中文乱码问题:

1. 修改CMakeLists.txt文件,在工程名称下方添加

cmake
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -finput-charset=UTF-8")


这一行代码会告诉编译器,源文件的字符集为UTF-8。

2. 修改工程文件夹下的.vscode/settings.json文件,加上如下内容:

json
{
"files.autoGuessEncoding": false,
"files.encoding": "utf8",
"editor.detectIndentation": false,
"editor.tabSize": 4,
"editor.insertSpaces": true
}


这里指定了文件编码为utf-8,确保VSCode正确识别编码。

3. 如果还是出现乱码,可以在VSCode中打开乱码的文件,选择文件右下角的编码类型,将其改为UTF-8。

希望以上步骤可以帮助您解决问题,如果还有其它问题,可以提供更多细节或代码。

哦,结束了,很怪,大伙给的建议太专业了,结果是改了一下时区设置就好了

img


但还是补了补编码知识