在Windows下解决中文乱码,终极方案
问题背景
-
C/C++ 初学者,一般会遇到输出中文在终端,导致的乱码问题。这是因为在windows下的编码编码会根据地区进行调整,如中国默认就是gbk,导致编码不一致。
-
在网上搜索解决办法,一般就是改文件编码,但我有时会将代码移至linux上编写,这又需要进行编码的更改,实在麻烦,于是我给出了以下两个我认为目前最好的解决方案。
使用C++23 print (最推荐)
- 如果你的编译器支持<print>,那就使用
print
来代替cout
或printf
吧,它拥有更优雅的字符串格式化,而且还可以根据本地环境自动修改字符串编码,可完全规避输出中文乱码。
使用编译器选项
- 如果是你的编译器是gcc14以下,可以直接指定编译选项,输出编码为gbk,如下
gcc -fexec-charset=gbk file.cpp
- 这样就可使输出内容与终端编码兼容,不会乱码
- 需要注意的是clang不支持此选项