VS Code C语言输出字符串乱码,调试debug中文显示乱码
微wx笑
2022-03-23【运维日志】
2
0关键字:
vscode C语言 乱码
1、C语言写在源代码中的字符串输出是乱码;2、调试debug的时候,从文件中读取的中文监视变量的时候显示乱码,但是输出是正常的。
1、C语言写在源代码中的字符串输出是乱码;
在Windows平台下,如果源代码文件以UTF-8编码保存,编译出来执行的时候,写在源代码中的字符串输出是乱码,即使在编译的时候指定选项也不行。
修改文件的编码:
打开/切换到要修改编码的文件,点击右下角的编码(显示的是文件当前的编码),然后选择:Save with Encoding

可以通过搜索快速查找目标编码,选择期望的编码就可以了。

编译生成的task.json文件内容:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe gdb",
"command": "C:/mingw/mingw64/bin/gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-ggdb",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-finput-charset=GBK",//输入编译器文本编码 默认为UTF-8
"-fexec-charset=GBK"//编译器输出文本编码 自行选择
],
"options": {
"cwd": "C:/mingw/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: C:/mingw/mingw64/bin/gcc.exe"
}
],
"version": "2.0.0"
}统一编码后,输出正常了,但是就有第二个问题了,读取 ANSI 编码的文本文件内容 printf("%s", revbuf[i]); 打印输出是正常的,但是调试的时候看到的都是乱码,看下面的图。
2、调试debug的时候,从文件中读取的中文监视变量的时候显示乱码,但是输出是正常的。

看下图:编码都统一为UTF-8,读取的文件编码也是UTF-8,调试的时候看到的变量值是正常的;但是。。。往下看

但是打印输出的都是乱码!

不过有一点值得庆幸,通过 fputs(", ", fwp); 写到文件中的内容显示是正常的。
将编码都统一为GBK
1、写在.c文件中的字符串输出正常
2、读取UTF-8编码的文本文件,调试时监视变量显示正常,但是打印输出乱码。
3、写入文件的内容部分乱码。
4、读取ANSI编码的文本文件,调试时监视变量显示为乱码,但是打印输出正常,写入文件的内容正常。
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/service/2022-03-23/1126.html



