问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

VScode终端和外部终端中文乱码问题解决方案

创作时间:
作者:
@小白创作中心

VScode终端和外部终端中文乱码问题解决方案

引用
CSDN
1.
https://blog.csdn.net/qq_46089163/article/details/140469911

在使用VScode进行C/C++开发时,经常会遇到终端中文乱码的问题。本文将详细介绍VScode终端和外部终端中文乱码的原因,并提供具体的解决方案,帮助开发者轻松应对这一常见问题。

前言

如果只想要看解决方案可直接跳转到总结部分,其余的章节只是用来说明原理和分步解释。

VScode终端

VScode的终端默认编码是UTF-8,当你编写好task.json ,开始cmake你的所有文件时候,要保证带有中文的文件是UTF-8的,要不然在终端执行的时候,会链接出错,不能够识别。

VScode的第二大特点

生成的文件编码格式都是GBK格式,对此生成的可执行文件,如果想要在VScode的终端执行,并且保证中文不乱码有两个方法

方法一

短暂修改当前终端活动页的编码格式为GBK,这样做的前提是,你已经在VScode里面编译生成好了一个可执行文件,操作和对比如下图:

这里可以看出文件目录下已经生成了一个可执行文件main.exe。在终端活动页为UTF-8时,执行可执行文件会发现中文没有输出,而可执行文件编码格式是GBK。对此需要将终端的活动页面改为GBK,然后再次执行可执行文件,即可观察到正常运行。

方法二

在进行代码编辑的时候直接告诉VScode终端,使用GBK方式对代码进行cmake重装编译,那么就可以看到新的可执行文件运行过程。

外部终端(命令为ctrl+f5)

当在VScode启用外部终端的时候,默认编码是GBK,所以我们得需要配置task.json,使得生成的可执行文件是GBK编码的,这样调用gbd调试可执行文件的时候,才能完整的被外部终端调用

结果如下,ctrl+f5

总结

外部终端是为了解决VScode终端不能使用system(“cls”)进行操作清屏程序输出的问题。

实现VScode终端和外部终端都能运行可执行文件

第一步:设置编码格式为UTF-8,使得中文编译能够被VScode终端cmake通过

第二步:设置代码终端编译风格为GBK

第三步:配置task.json文件,使得输出的可执行文件为GBK格式,方便外部终端调用

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\Microsoftdownload\\MSys2\\MSys2\\ucrt64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}\\*.cpp",
                "-I",
                "${fileDirname}\\include",
                "-o",
                "${fileDirname}\\out\\${fileBasenameNoExtension}.exe",
                "-fexec-charset=GBK"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "编译器: D:\\Microsoftdownload\\MSys2\\MSys2\\ucrt64\\bin\\g++.exe"
        }
    ]
}

它的配置按照你正常能编译通过的格式就行,重点在于这一步,生成的可执行文件编码格式

第四步:配置launch.json文件使得允许外部终端调用可执行文件

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\out\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [
            ],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\Microsoftdownload\\MSys2\\MSys2\\ucrt64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                
            ]
        
        }
    ]
}

同理正常编译即可,重点在这个命令给他打开就行

心得

最后配置完成,我们就得到了既能外部终端查看可执行文件结果(使得system(“cls”)成功运行),也能在VScode查看到相应的结果。重点是都不会出现中文乱码行为。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号