cmd或power shell运行tomcat、idea中terminal显示时中文会乱码的解决办法(亲测有效)

cmd或power shell运行tomcat、idea中terminal显示时中文会乱码的解决办法(亲测有效)

解决思路:

首先明确以下要点:

  1. Windows10 家庭版 2004
  2. 系统的“时间和语言”中的区域设置是默认 中文,没有去勾选那个“Beta版:使用Unicode UTF-8提供全球语言支持”的选项
  3. 系统环境变量JAVA_TOOL_OPTIONS中没有配置“-Dfile.encoding=UTF-8”(如果完全没有添加JAVA_TOOL_OPTIONS这个变量那更好)

当时碰到这个问题确实很棘手,于是查看网上很多人写的方法,最终总结有如下几种方案:

  1. 直接启用“Beta版:使用Unicode UTF-8提供全球语言支持”的选项:
  • 优点:
    不用设置什么系统环境变量或者是jvm环境变量,直接一步到位,java中的程序直接调用String.getBytes()会变成使用UTF-8了。
  • 缺点:
    造成一些旧软件中文乱码显示;
    记事本程序打开一些文件会乱码;
    如果平常都是不会使用到那些只支持GBK汉化的软件,那没啥毛病,毕竟现在都是Unicode时代了。
  1. 修改tomcat的log文件编码,idea的terminal由cmd.exe改为使用git应用程序的bash.exe等(然后一大推莫名其妙的操作,虽然有效但不太合理!!!)

当修改jdk编译时读取java文件的默认编码为UTF-8时,有多种方式能达到目的:

  • 添加一个系统环境变量JAVA_TOOL_OPTIONS,并配置(追加)“-Dfile.encoding=UTF-8”

最优解决方案:

  1. 添加一个系统环境变量JAVA_TOOL_OPTIONS,并配置(追加)“-Dfile.encoding=UTF-8”

在这里插入图片描述

保存并重启idea后,运行点击编译可以马上看到编译成功了,但是控制台打印出来的中文还是乱码,这时候就需要继续下一步的操作了。
注意:添加后会影响所有地方的编译,因为这是一个系统环境变量(全局的);在执行javac命令时也可以添加“-encoding utf-8”参数指定具体的编码。
至于为什么设置全局的,因为如果只是在idea中设置JVM变量,那么在idea的terminal中执行编译命令(如maven install或gradle build)时还是会用GBK编码去编译java源文件,所以依然报错!!!

  1. 修改cmd的默认编码为utf-8

在注册表位置:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
添加一个字符串项:AutoRun
内容填写:chcp 65001

在这里插入图片描述

  1. 修改PowerShell的默认编码为utf-8
    首先打开PowerShell运行下面的命令(注意复制的时候要带上$符合的)获取当前用户的配置脚本的文件路径:
$Profile

运行后结果示例:

在这里插入图片描述

用记事本打开这个Microsoft.PowerShell_profile.ps1文件(没有这个文件的话就创建),添加以下内容后重启PowerShell就可生效(如果提示没有权限运行,那么使用管理员PowerShell执行命令“Set-ExecutionPolicy RemoteSigned”后即可正常):

chcp 65001
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值