VS Code C语言输出字符串乱码,调试debug中文显示乱码
微wx笑
2022-03-23【运维日志】
147
2
0关键字:
vscode C语言 乱码
1、C语言写在源代码中的字符串输出是乱码;2、调试debug的时候,从文件中读取的中文监视变量的时候显示乱码,但是输出是正常的。
目录
1、C语言写在源代码中的字符串输出是乱码;
在Windows平台下,如果源代码文件以UTF-8编码保存,编译出来执行的时候,写在源代码中的字符串输出是乱码,即使在编译的时候指定选项也不行。
修改文件的编码:
打开/切换到要修改编码的文件,点击右下角的编码(显示的是文件当前的编码),然后选择:Save with Encoding
可以通过搜索快速查找目标编码,选择期望的编码就可以了。
编译生成的task.json文件内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | { "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