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