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

本文解答了VSCode中中文乱码问题,涉及编码设置调整,包括task.json和launch.json的修改,以确保在不同控制台环境下正确编译和运行C++程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

主要问题有这几个:

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里面的一些路径

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

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

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

资源下载链接为: https://pan.quark.cn/s/67c535f75d4c 在初学 Python 时,中文乱码问题常让人头疼。我总结了在 VSCode + Anaconda2 环境下遇到的中文乱码的解决办法,虽表述简略,但实用有效。同时,对乱码产生的原因也做了说明,只是自己对编原理还不够精通,若能真正理解原理,那解决乱码问题就能得心应手了。 确保 Python 文件本身的编格式正确。在 VSCode 中,可以通过底部状态栏查看和修改文件编,将其设置为 UTF-8,这是目前广泛使用的编格式,兼容性较好,能有效避免因文件编问题导致的乱码。 在 Python 源代文件的开头添加编声明,如# -*- coding: utf-8 -*-。这有助于 Python 解释器正确识别文件的编方式,从而在读取和处理中文字符时不会出现乱码。 如果是在控制台输出中文,要检查控制台的编设置。对于 Windows 系统的命令提示符,可以通过chcp命令查看和设置代页,将其设置为 65001(对应 UTF-8 编),这样在运行 Python 程序时,输出的中文字符才不会乱码。在 VSCode 的内置终端中,一般默认支持 UTF-8 编,通常无需额外设置。 当读取或写入包含中文的文件时,明确指定文件的编格式。例如,在使用open函数时,添加encoding='utf-8'参数,像这样with open('file.txt', 'r', encoding='utf-8') as f,这样可以保证在文件读写过程中正确处理中文字符,避免因编不一致而产生乱码乱码的出现主要是由于编和解过程不匹配。计算机内部是以二进制形式存储数据的,而字符编就是将字符与特定的二进制序列进行映射的规则。不同的编方式,其映射关系不同。当一个程序按照某种编方式将中文字符为二进制数
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟vsc

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

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

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

打赏作者

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

抵扣说明:

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

余额充值