解决VSCODE中java开发,终端乱码

一、环境

  • 操作系统:windows10
  • powershell版本:PowerShell 7.3.3
  • VSCODE版本信息:
    版本: 1.76.2 (user setup)
    提交: ee2b180d582a7f601fa6ecfdad8d9fd269ab1884
    日期: 2023-03-14T17:55:54.936Z
    Electron: 19.1.11
    Chromium: 102.0.5005.196
    Node.js: 16.14.2
    V8: 10.2.154.26-electron.0
    OS: Windows_NT x64 10.0.19045
    沙盒化: Yes

二、错误表现

  1. springboot2.3.4 使用JDK1.8编译和运行的时候,终端出现中文乱码
  2. vs code java 乱码 vscode运行java中文乱码_spring boot

  3. springboot3.x 使用JDK11编译运行的时候中文正常显示,不会出现乱码。
  4. 为什么会因为JDK版本不同而出现不同的显示结果,原因不明。

三、解决方案

  1. 原因简单分析。
    出现这个现象的原因是因为编码方式的不同。(VScode的默认编码方式为UTF-8,输出到终端的字符都是UTF-8的,而中国地区下PowerShell的编码方式GBK)。如果VScode终端那里调用的是PowerShell,两者编码方式的不同的就导致了中文乱码的问题。所以我们解决乱码的方式,就是将两者的编码方式统一就行,要么将两者都统一为UTF-8,要么就统一为GBK。
  2. 临时解决,这里我们把powershell的字符集设置成UTF-8。在VSCODE打开的终端界面中输入下面的代码。
$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8

上面这种方式只能生效一次,也就是每次重新打开终端都需要重新执行上面的代码。

  1. 使用powershell的配置文件永久解决。
    一、生成“Microsoft.PowerShell_profile.ps1”配置文件。
  1. 生成一个PowerShell的配置文件。
  • 以管理员身份运行PoweShell,运行New-Item $PROFILE -ItemType File -Force。
  • 打开“我的文档”,在文件夹“PowerShell”或者“WindowsPowerShell”会生成一个名为“Microsoft.PowerShell_profile.ps1”的文件。该文件中暂时是空的。添加如下内容:
    OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
  1. 复制修改后的“Microsoft.PowerShell_profile.ps1”到合适的位置。

  1. 二、在vscode中配置。
  • 打开文件(File) -> 首选项(Preferences) -> 设置(Settings)。搜索“terminal.integrated.default profile”,修改windows下面的选项为“PowerShell”。
  • vs code java 乱码 vscode运行java中文乱码_vs code java 乱码_02

  • 打开“setting.json”文件,修改其中的配置。添加如下配置项:
"terminal.integrated.profiles.windows": {
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell",
            "args": [
                "-noexit",
                "-file",
                "D:\\Program Files\\vscode\\powershell\\Microsoft.PowerShell_profile.ps1"
             ]
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
        "Git Bash": {
            "source": "Git Bash"
        }
    }

vs code java 乱码 vscode运行java中文乱码_PowerShell_03

四、解决后的效果

vs code java 乱码 vscode运行java中文乱码_spring boot_04

五、参考

vs code java 乱码 vscode运行java中文乱码_PowerShell_05


六、坑-在我环境中无效的方法

VS Code解决终端中文乱码