关于vscode中,内置终端打印输出和外部终端(windows窗口)打印输出的中文乱码问题,简单粗暴,一篇文章解决所有vscode乱码问题!

1.vscode在内置终端输出中文很简单,只要是程序正确,utf_8编码格式,就没问题。无论是task的编译过程或者是launch的运行和调试过程,只要使用内置终端,vscode默认都是用utf_8编码格式解析出task编译生成的可执行文件.exe,终端就不会输出中文乱码。

2.有兄弟不想用内置终端输出的,想要在windows外置终端输出的话,那么就需要在launch的配置列表(configurations)中将"externalConsole": faluse改为"externalConsole": true,即调用外部控制台,外置终端。launch设置如下:

    {
    "configurations": [
        {
            "name": "(gdb) c++启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\employeemanagementsystem\\source_files\\GBK_execution.exe",    //这里是需要设置的gbk.exe路径,必须要是详细路径!
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,     //这里改成true,启动外部控制台
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe ",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text":"-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

3.但是发现,按照上述所说,在内置终端中打印就不会出现中文乱码,但是利用launch的外置终端运行调试的时候就会出现乱码,这是为何?这是因为windows电脑中国区一般会利用gbk的解码方式,所以你task调试时候生成的可执行文件.exe是utf_8转换而来,所以出现解码矛盾了。那么如何解决?网上方法很多,但是我发现可以添加一个task任务,这样有两个task任务就可以编译生成两个可执行文件.exe,一个是utf_8的.exe,另外一个是gbk的.exe,然后将launch中的程序执行路径修改为gbk的.exe,这样launch的打印输出和task的打印输出就都可以实现中文不乱码输出了!那么task修改如下:

        {
   "tasks": [
       {
           "type": "cppbuild",
           "label": "C/C++: g++.exe 生成utf_8活动文件",        //任务名称可以更改,这里是第一个任务配置
           "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
           "args": [
               "-fdiagnostics-color=always",
               "-g",
               "*.cpp",
                "-I",
                "${workspaceFolder}\\employeemanagementsystem\\head_files",
                //"${workspaceFolder}\\employeemanagementsystem\\source_files",
                "-o",
               "${fileDirname}\\utf_execution.exe",      //这里生成的是utf.exe可执行文件
           ],
           "options": {
               "cwd": "${fileDirname}"
           },
           "problemMatcher": [
               "$gcc"
           ],
           "group": "build",
           "detail": "调试器生成的任务。"
       },
       {
           "type": "cppbuild",
           "label": "C/C++: g++.exe 生成gbk活动文件",        //这里的任务名字可以更改,这里是第二个任务配置
           "command": "C:\\Program Files\\mingw64\\bin\\g++.exe",
           "args": [
               "-fdiagnostics-color=always",
               "-g",
               "*.cpp",
                "-I",
                "${workspaceFolder}\\employeemanagementsystem\\head_files",
                //"${workspaceFolder}\\employeemanagementsystem\\source_files",
                "-o",
               "${fileDirname}\\GBK_execution.exe",            //这里生成的是gbk.exe可执行文件
               "-fexec-charset=GBK"                                    //这里是将utf转换为gbk编码,那么生成的就会是gbk.exe
           ],
           "options": {
               "cwd": "${fileDirname}"
           },
           "problemMatcher": [
               "$gcc"
           ],
           "group": "build",
           "detail": "调试器生成的任务。"
       },
       
       
   ],
   "version": "2.0.0"
}

4.到此就结束了,是不是很简单?这里的task写成了两个调试任务,我们可以自己定义它的名称区分生成的utf_8编码的.exe文件或者gbk编码的.exe文件。我这里的task和launch配置文件用于编译调试运行多文件c++程序没有问题,可以作为一个基础模板,关于其中不同的参数可以上网查,本篇需要有一定的vscode基础哈。最后附上另外一个vscode调试c++的启动配置文件c_cpp_properties.json和我的目录情况,有需要的同学可能会用到!

{
   "configurations": [
       {
           "name": "Win32",
           "includePath": [
               "${workspaceFolder}/**",
               "${workspaceFolder}\\employeemanagementsystem\\head_files\\**"
           ],
           "defines": [
               "_DEBUG",
               "UNICODE",
               "_UNICODE"
           ],
           "cStandard": "c17",
           "cppStandard": "gnu++14",
           "intelliSenseMode": "windows-gcc-x64",
           "compilerPath": "C:/Program Files/mingw64/bin/g++.exe"
       }
   ],
   "version": 4
}

在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值