一个cmake的项目系统,出现中文乱码
初学cmake,本来程序没有乱码,按教程下载扩展改成UTF-8编码,之后运行不知道怎么的中文就乱码了
以下是所作的更改
别人的教程不见得就是正确的,建议自己理解清楚文件编码、控制台编码:
【文件编码】
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
该回答引用ChatGPTcmake
set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -finput-charset=UTF-8")
json
{
"files.autoGuessEncoding": false,
"files.encoding": "utf8",
"editor.detectIndentation": false,
"editor.tabSize": 4,
"editor.insertSpaces": true
}
哦,结束了,很怪,大伙给的建议太专业了,结果是改了一下时区设置就好了
target_include_directories 达到的效果和 target_link_libraries 是类似的,需要注意的是