解决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
二、错误表现
- springboot2.3.4 使用JDK1.8编译和运行的时候,终端出现中文乱码
- springboot3.x 使用JDK11编译运行的时候中文正常显示,不会出现乱码。
- 为什么会因为JDK版本不同而出现不同的显示结果,原因不明。
三、解决方案
- 原因简单分析。
出现这个现象的原因是因为编码方式的不同。(VScode的默认编码方式为UTF-8,输出到终端的字符都是UTF-8的,而中国地区下PowerShell的编码方式GBK)。如果VScode终端那里调用的是PowerShell,两者编码方式的不同的就导致了中文乱码的问题。所以我们解决乱码的方式,就是将两者的编码方式统一就行,要么将两者都统一为UTF-8,要么就统一为GBK。 - 临时解决,这里我们把powershell的字符集设置成UTF-8。在VSCODE打开的终端界面中输入下面的代码。
$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8
上面这种方式只能生效一次,也就是每次重新打开终端都需要重新执行上面的代码。
- 使用powershell的配置文件永久解决。
一、生成“Microsoft.PowerShell_profile.ps1”配置文件。
- 生成一个PowerShell的配置文件。
- 以管理员身份运行PoweShell,运行New-Item $PROFILE -ItemType File -Force。
- 打开“我的文档”,在文件夹“PowerShell”或者“WindowsPowerShell”会生成一个名为“Microsoft.PowerShell_profile.ps1”的文件。该文件中暂时是空的。添加如下内容:
OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
- 复制修改后的“Microsoft.PowerShell_profile.ps1”到合适的位置。
二、在vscode中配置。
- 打开
文件(File)
->首选项(Preferences)
->设置(Settings)
。搜索“terminal.integrated.default profile”,修改windows下面的选项为“PowerShell”。 - 打开“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"
}
}
四、解决后的效果
五、参考
- https://www.ewbang.com/community/article/details/961545381.html
- https://code.visualstudio.com/docs/terminal/profiles
六、坑-在我环境中无效的方法