VScode中文乱码问题(内外同时不乱码)以及之前博客补漏

感谢大家对我之前文章的支持,之前写的文章不是很完善,有部分朋友私信我问我一些问题,针对这些问题,我在这里为大家统一解决一下:

主要问题有这几个:

1.还是中文乱码问题,上两篇由于要讲的东西太多,我太懒,所有没有给大家写完整

😫😫😫😫😫😫😫😫😫原谅我😫😫😫😫😫😫😫😫😫

2. 还有这里写了半没有写完🤥🤥🤥🤥🤥🤥🤥

问题解决

问题原因:

  • vscode内部终端UTF-8编码,外部控制台GBK编码
  • 编译的可执行文件默认是UTF-8编码
  • 所以用外部控制台时就会出现中文乱码现象

解决办法:

  • 在用外部控制台运行编译可执行文件时,将文本直接编译成GBK编码
  • 用内部控制台运行时编译可执行文件时,默认将文本编译成UTF-8编码

 1.task.json修改如下

 源码如下

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C_Compile_Single_File", //任务名称,launch.json调用tsaks任务就要用到这个
            "command": "C:\\mingw64\\bin\\gcc.exe",
            "args": [ //这个是gcc编译C/C++的命令脚本,不清楚可以在网上查找gcc如何编译C/C++
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\exe\\${fileBasenameNoExtension}.exe"// 内部控制台调用的任务里面就没有转换编码那个命令
            ],
            "options": {
                "cwd": "C:/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "编译器: C:/mingw64/bin/gcc.exe"
        },
        {
            "type": "cppbuild",
            "label": "C_Compile_Single_File_GBK",
            "command": "C:\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\exe\\${fileBasenameNoExtension}.exe",
                "-fexec-charset=GBK"//将可执行程序代码设置为GBK
            ],
            "options": {
                "cwd": "C:/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "编译器: C:/mingw64/bin/gcc.exe"
        }
    ]
}

 2.launch.json修改如下

下面这两种运行配置都是外部控制台,区别在于:

第一个只可以调试,因为他没有自动暂停程序,也就是会闪退,这个问题好多人都碰到过。在这里为大家解决了。

第二个只可以运行,因为他会跳过断点。但带有程序自动暂停,也就是我们熟知的“请按任意键继续...”

源码如下

{
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "C | 单文件(编译|调试)",    //这个就是显示在运行这里的名字
            "preLaunchTask": "C_Compile_Single_File",   //这个任务对应的就是task.json文件里的一个任务
            "type": "cppdbg",   // 配置类型cppdbg就是内部控制台,cppvsdbg
            "request": "launch",
            "program": "${fileDirname}\\exe\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "c:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "C | 单文件(外部调试)",
            "preLaunchTask": "C_Compile_Single_File_GBK",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\exe\\${fileBasenameNoExtension}.exe", //如果运行不成功在运行的文件统计完目录下面创建一个名为exe的文件
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "c:\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "C | 单文件外部(不可调试)",
            "preLaunchTask": "C_Compile_Single_File_GBK",
            "type": "cppvsdbg",//类型为cppvsdbg意思为windows启动也就是外部控制台,不过这个是自带一个程序暂停的
            "request": "launch",
            "program": "${fileDirname}\\exe\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "console": "externalTerminal"
        }
    ]
}

 这里我放一个超链接到我的上一篇博客,大家可以去文章末尾下载我已经配置好的;

链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1AtodTEJ6k5ouov3ZLb39kg 
提取码:dgzb

多文件编译,原理也是差不多,就是改了launch和task.json里面的一些路径

这个东西要讲好真的不容易🤥🤥🤥🤥

大家有不会的可以在底下留言或者私信我,我看到了都会为大家解决。

这个专栏已经发了好多期了,已经水不动了😅

  • 34
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟vsc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值