设为首页 加入收藏

TOP

vscode c/c++ MinGW/MSYS2 配置 | 解决中文乱码/找不到dll问题(不设置环境变量)(三)
2023-07-23 13:27:41 】 浏览:83
Tags:vscode c/c MinGW/MSYS2 配置 解决中 文乱码 dll 问题
de中配置一下。

整个过程是这样的:

我们代码的编码是UTF-8
把UTF-8编码的代码交给mingw,它也默认当做UTF-8处理(目前为止这是正确的)
mingw处理后生成的数据还是UTF-8编码(目前为止还是正确的)
把mingw处理后的数据(UTF-8编码)给cmd(目前为止也是正确的)
cmd按GBK编码处理它(UTF-8),这时出现错误,所以出现乱码

因此有两种解决方案,一个是将vscode的编码改为gbk,一个是将命令行的编码改为utf-8。

输出编码改为gbk

编译时使用GBK编码输出,然后再让命令行去显示。已经在配置文件中设置好选项,取消注释即可。

命令行编码改为utf-8

在新版中设置添加了选项Terminal ? Integrated: Detect Locale,默认auto已经可以解决问题,但是如果不行,可以手动设置。

在 settings.json 中添加以下内容,手动设定终端编码:

  "terminal.integrated.defaultProfile.windows": "PowerShell",//默认终端,可选项为PowerShell,Command Prompt
    "terminal.integrated.profiles.windows": {
      "PowerShell": {
        "source": "PowerShell",
        "args": ["-NoExit", "/C", "chcp 65001"],
        "icon": "terminal-powershell"
      },
      "Command Prompt": {
        "path": [
          "${env:windir}\\Sysnative\\cmd.exe",
        "${env:windir}\\System32\\cmd.exe"
        ],
        "args": [
          "/K",
          "chcp 65001"
        ],
        "icon": "terminal-cmd"
      },

  },

或者修改终端的编码

powershell7:

在profile.ps1中添加以下内容

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding

cmd :

通过注册表修改编码:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"FontSize"=dword:00140008
"CodePage"=dword:000003a8

不使用环境变量使用code runner

目前的解决方案是在powershell的配置文件中添加以下内容:

$Env:Path += ";C:/programs/msys2/ucrt64/bin "#添加mingw的路径

使用MinGW-w64编译的文件打开失败

解决方案:将dll文件复制到可执行文件所在的目录或使用静态编译(运行时选择Release)。

CMake 编译

VScode+MSVC+CMake搭建C++开发环境
Windows下VSCode+CMake搭建开发环境

参考链接

关于UTF-8、GBK编码以及编译时charset的指定的一些总结

愿编程不再乱码(含Qt)-根因深究

mingw控制台中文乱码

Make console windows fully UTF-8 by default on Windows, in line with the behavior on Unix-like platforms

/utf-8 (Set source and execution character sets to UTF-8)

在Visual C++中使用UTF-8格式代码文件

Visual Studio C++ 默认 UTF-8 编码及 *.editorconfig 统一代码格式 - Me伟 - 博客园 (cnblogs.com)

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇驱动开发:内核ShellCode线程注入 下一篇驱动开发:内核解锁与强删文件

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目