目录
1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因
2、这样会导致什么问题呢?
(1) 问题一: 【属性】选项的【字体】无法识别自定义文字样式,【默认值】选项可选自定义字体样式,却无法覆盖【属性】选项
(2) 问题二:在使用git命令输出中文时会有乱码
3、解决方法:把注册表中Console(控制台)的CodePage(当前代码页)选项的编码修改为65001(utf-8)
(1) Win+R,输入regedit,定位到 [计算机\HKEY_CURRENT_USER\Console\]
(2) 把常用的终端(控制台)的CodePage设置为65001(utf-8)
① 系统自带的CMD
② D:/Git/bin/bash.exe
③ D:/Git/bin/sh.exe
④ D:/Git/bin/git-bash.exe 和 D:/Git/bin/git-cmd.exe
⑤ 单独使用PowerShell时,控制台输出中文乱码
[1] 方法1:在Microsoft.PowerShell_profile.ps1配置文件中设置utf-8编码
[2] 方法2:打开regedit,定位到:计算机\HKEY_CURRENT_USER\Console\。给所有PowerShell选项新建类型为DWORD(32位)值的CodePage项,点击【基数:十进制】,写入数值:65001 (utf-8),从源头解决中文乱码问题。
⑥ 使用Terminal来挂靠PowerShell时,控制台输出中文乱码
(3) 总结
4、即便把以上终端应用的界面编码改为65001(utf-8),但IDEA挂载bash.exe时还是会有中文乱码输出
(1) 问题
(2) 解决方法
① 控制面板→区域→管理→更改系统区域设置→开启:Beta版:使用Unicode UTF-8提供全球语言支持(U)
② 在IDEA的设置→编辑器→文件编码 处,把全局编码和项目编码设置为utf-8;
③ 在D:\IDEA\bin 的idea64.exe.vmoptions中添加-Dconsole.encoding=UTF-8和-Dfile.encoding=UTF-8
(3) 运行
1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因
在控制面板→区域→管理→更改系统区域设置,当前系统区域设置(C) 为:中文(简体,中国)。其对应的语言编码是:936 (ANSI/OEM - 简体中文 GBK)。
系统自带的cmd.exe 以及 Git的bash.exe、sh.exe、git-bash.exe和git-cmd.exe 和Powershell以此为依据,在注册项CodePage设置为936。
导致“属性”→ “选项”中,其【当前代码页】的编码固定在936 (ANSI/OEM - 简体中文 GBK)。
2、这样会导致什么问题呢?
(1) 问题一: 【属性】选项的【字体】无法识别自定义文字样式,【默认值】选项可选自定义字体样式,却无法覆盖【属性】选项
【属性】里面,【选项】的“当前代码页”编码为936 (ANSI/OEM - 简体中文 GBK)时,【字体】无法识别自定义文字样式,比如:CaskaydiaMono NFM。此处只能选择类似于“新宋体”、“隶书”、“楷体”等样式。
选择【默认值】时,虽然可以选择自定义下载的字体,但是无法覆盖【属性】选项里面的字体样式,字体的样式还是“新宋体”
(2) 问题二:在使用git命令输出中文时会有乱码
因为【当前代码页】编码(即控制台编码格式)固定在936 (ANSI/OEM - 简体中文 GBK),而这些控制台依赖的git.exe默认编码格式为utf-8,由于编码格式不一致,程序运行时往往会出现中文乱码的情况。
此时在D:/Git/etc目录下,往配置文件 (例如:bash.bashrc、profile、gitconfig) 中设置编码为utf-8的语句也没有任何作用。比如下图:bash.bashrc中设置编码为utf-8,对解决控制台的中文乱码没有任何作用。
3、解决方法:把注册表中Console(控制台)的CodePage(当前代码页)选项的编码修改为65001(utf-8)
(1) Win+R,输入regedit,定位到 [计算机\HKEY_CURRENT_USER\Console\]
(2) 把常用的终端(控制台)的CodePage设置为65001(utf-8)
有CodePage选项的,点击【十进制】的基数,设置为65001(utf-8)。没有CodePage选项的请自行新建。
① 系统自带的CMD
② D:/Git/bin/bash.exe
③ D:/Git/bin/sh.exe
因为sh.exe没有CodePage选项,我们需要右键→新建→DWORD(32位)值。命名该项为:CodePage。十进制值为65001。
④ D:/Git/bin/git-bash.exe 和 D:/Git/bin/git-cmd.exe
同上设置,我们需要右键→新建→DWORD(32位)值。命名该项为:CodePage。十进制值为65001。
⑤ 单独使用PowerShell时,控制台输出中文乱码
[1] 方法1:在Microsoft.PowerShell_profile.ps1配置文件中设置utf-8编码
在PowerShell中输入$profile,查看.ps1配置文件的路径
编辑Microsoft.PowerShell_profile.ps1。在里面添加以下语句。
#8. 设置Powershell控制台输出结果的编码为utf-8,解决输出中文乱码的问题 $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 |
[2] 方法2:打开regedit,定位到:计算机\HKEY_CURRENT_USER\Console\。给所有PowerShell选项新建类型为DWORD(32位)值的CodePage项,点击【基数:十进制】,写入数值:65001 (utf-8),从源头解决中文乱码问题。
以上方法只能解决:[单独使用PowerShell时,控制台输出中文乱码] 的问题
⑥ 使用Terminal来挂靠PowerShell时,控制台输出中文乱码
当我们使用Terminal来挂靠PowerShell时,Terminal会默认使用系统的GBK编码,覆盖了PowerShell在注册表设置的CodePage值:65001(utf-8)。导致输出到控制台时会有中文乱码。
按方法1的做法,不仅可以避免上述问题。单独使用PowerShell时也会避免中文乱码。
在PowerShell中输入$profile,查看.ps1配置文件的路径
编辑Microsoft.PowerShell_profile.ps1。在里面添加以下语句。
#8. 设置Powershell控制台输出结果的编码为utf-8,解决输出中文乱码的问题 $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 |
再次测试,不再有中文乱码。
(3) 总结
① 对于系统自带的cmd.exe 以及 Git的bash.exe、sh.exe、git-bash.exe和git-cmd.exe ,遇到在控制台输出中文乱码的问题,建议进入regedit注册表中,新建或修改DWORD类型的CodePage的值,统一为:65001 (utf-8)
② 单独使用Powershell.exe,遇到在控制台输出中文乱码的问题,有两种解决方法:
方法1:通过$profile定位到.ps1配置文件,输入以下语句:
#8. 设置Powershell控制台输出结果的编码为utf-8,解决输出中文乱码的问题 $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 |
方法2:进入regedit注册表中,新建或修改DWORD类型的CodePage的值,统一为:65001 (utf-8)
③ 使用Terminal来挂靠PowerShell时,遇到在控制台输出中文乱码的问题,有一种解决方法:
方法1:通过$profile定位到.ps1配置文件,输入以下语句:
#8. 设置Powershell控制台输出结果的编码为utf-8,解决输出中文乱码的问题 $OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 |
所以对于PowerShell来说,使用方法1可以直接解决控制台输出中文乱码的问题。方法2可用可不用。不会影响方法1。两个方法同时使用也行。
4、即便把以上终端应用的界面编码改为65001(utf-8),但IDEA挂载bash.exe时还是会有中文乱码输出
(1) 问题
已知IDEA的terminal插件是一个jar包。当terminal加载bash.exe时,git命令含有中文时,会输出中文乱码。
网上说,
|
可以解决IDEA的terminal挂载外部终端时,使用git命令产生的中文乱码现象。
这个方法不全对。经实践,当Win10系统不开启:Beta版:使用Unicode UTF-8提供全球语言支持(U)
任你怎么修改IDEA配置文件的编码,它都默认IDEA的插件以GBK的编码进行编译运行。而我们的bash.exe在前面通过修改注册表,把编码改成了UTF-8,这就导致IDEA的terminal插件在挂载bash.exe时,编码冲突,运行git命令时出现中文乱码。
(2) 解决方法
① 控制面板→区域→管理→更改系统区域设置→开启:Beta版:使用Unicode UTF-8提供全球语言支持(U)
② 在IDEA的设置→编辑器→文件编码 处,把全局编码和项目编码设置为utf-8;
③ 在D:\IDEA\bin 的idea64.exe.vmoptions中添加-Dconsole.encoding=UTF-8和-Dfile.encoding=UTF-8
(3) 运行
再次运行git命令时,已经没有中文乱码了。