VSCode和DevC++代码运行终端中文显示乱码

原因:

使用GCC对C++代码进行编译时,有两个关键参数

  • 一是编译器用于读取解析源代码的编码,由-finput-charset=encoding指定
  • 二是编译器用于生成可执行文件的编码,由-fexec-charset=encoding指定

其中encoding为使用的编码集,如utf-8,GBK等

  • 编译器用于读取解析的编码集如果与文件保存的编码不匹配,程序可能不能够正常执行,如文件保存未utf-8但使用GBK对其进行读取

  • 编译器用于生成可执行文件的编码如果与终端读取输入的编码不匹配,则可能终端出现中文乱码,如可执行文件使用utf-8但终端使用GBK

VSCode和DevC++运行代码后,终端显示中文乱码的原因为:

  • cpp文件通常的默认保存格式为utf-8
  • VSCode和DevC++调用的GCC默认解析编码和生成编码都为utf-8
  • Windows(中国)终端默认使用的解析编码为GBK

解决中文乱码:

VSCode

当前目录下的.vscode目录下的tasks.json文件的功能指定是编译器的配置,只需要在其args项目中添加-fexec-charset=GBK,如果想要同时规定解析编码也加入-finput-charset=UTF-8(虽然默认就是),以下为示例tasks文件(C++):

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "gcc_path\\g++.exe", // 自己机器上GCC配置的环境变量路径下的g++
            "args": [
                "-fdiagnostics-color=always",
                "-finput-charset=UTF-8", // 解析编码
                "-fexec-charset=GBK", // 生成编码
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "gcc_path" // 自己机器上GCC配置的环境变量路径
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

DevC++

打开顶部工具栏目中的编辑器选项

在这里插入图片描述

设置解码方式规范为UTF-8
在这里插入图片描述

打开顶部工具栏中编译选项


在选择的执行模式下,编译时加入以下命令

-finput-charset=UTF-8 -fexec-charset=GBK

在这里插入图片描述
再次使用VSCode和DevC++运行代码,即可在终端看到正常显示的中文字符而非乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值