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



