设置了编码格式但idea控制台中文输出仍然乱码的问题

项目场景:

当我们需要使用idea后台输出一些中文变量进行调试时,这个bug就很麻烦


问题描述

在idea设置了UTF-8的编码,控制台输出的中文是乱码,但是当我们打印到网页中的中文是正常的

比如:

String user = req.getParameter("username");
String psw = req.getParameter("password");
System.out.println("User: " + user);

这是我们后台获取的输出(乱码状态): 这时输出的中文仍然是乱码
这是我们网页使用getWriter输出的(正常):在这里插入图片描述

原因分析:

这是因为我们没有对idea后台进行设置,所以导致了程序运行时的中文乱码问题:


解决方案:

参考了网络上的一些博客,问题终于得到解决,大致分为以下几步:

  • 1.设置字符编码为 UTF-8
    点击菜单 File -> settings -> Eitor -> File Encodings ,将字符全局编码、项目编码、配置文件编码统一设置为UTF-8,之后点击Apply,再点击OK。
    在这里插入图片描述
    1. 修改 IDEA 配置文件,让其支持中文编码
      上方导航栏“Help→Etit Custom VM Options…”进入自定义虚拟机选项页面,添加如下代码
    -Dfile.encoding=UTF-8
    
    在这里插入图片描述
  • 3.找到 IDEA 的安装目录,进入 /bin 文件夹,找到下面两个文件,同样添加如下代码:
    -Dfile.encoding=UTF-8
    

在这里插入图片描述

注意新版本的idea,只有一个idea64.exe.vmoptions,只需要对该配置文件修改即可。

    1. 将控制台底部设置为utf-8
      在这里插入图片描述
  • 5.修改Tomcat的编码
    • 在tomcat目录下apache-tomcat-9.0.93\conf\server.xml中,新增:URIEncoding=“UTF-8”
          <!--  增加URIEncoding="UTF-8" -->
      <Connector port="8080" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443"
             maxParameterCount="1000"
             URIEncoding="UTF-8" 
             />
      
    • 在Run/Debug Configurations中修改VM options
      在这里插入图片描述
    1. 相关配置修改完成后, 需重启 IDEA, 才能让设置生效 , 再次查看即可解决中文乱码问题
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个问题可能是由于 IDE控制台默认使用的字符集与全局变量使用的字符集不同造成的。 解决方法如下: 1. 在 IDE设置中,找到控制台字符集选项,将其设置为 UTF-8。 2. 在代码中使用 Python 的 `print` 函数时,加上参数 `end=' '`。 例如: ``` print("中文字符串", end=' ') ``` 这样就可以解决控制台输出中文乱码问题了。 如果这些方法都无法解决问题,可以尝试将字符串转换成 gbk 编码再输出,例如: ``` print(s.encode('gbk').decode('gbk')) ``` 这样就可以在控制台正常输出中文了。 ### 回答2: 当全局变量已经是UTF-8编码,但IDEA控制台输出中文仍然乱码问题,可能是输出编码设置不正确导致的。 首先,确保IDEA控制台的编码设置与全局变量的UTF-8编码一致。在IDEA中,可以通过以下步骤进行设置: 1. 打开IDEA,进入“File”(文件)菜单,选择“Settings”(设置)选项。 2. 在弹出的Settings窗口中,找到“Editor”(编辑器)选项,并选择“File Encodings”(文件编码)子选项。 3. 在File Encodings窗口中,检查“IDE Encoding”(IDE编码)是否设置为UTF-8。如果不是,请将其设置为UTF-8。 4. 同时,确保“Default encoding for properties files”(属性文件的默认编码)也设置为UTF-8。 如果以上设置没有解决问题,可以尝试在代码中添加以下语句,显式设置输出编码为UTF-8: ``` System.setOut(new PrintStream(System.out, true, "UTF-8")); ``` 这样,控制台输出中文字符应该能够正确显示。 另外,还需要确保所使用的字体支持中文字符。可以检查IDEA的字体设置是否是可以正确显示中文字符的字体。 综上所述,如果全局变量已经是UTF-8编码,但IDEA控制台输出中文仍然乱码,需要检查IDEA的编码设置、显示字体设置以及在代码中显式设置输出编码。 ### 回答3: 要解决在IDEA控制台输出中文乱码问题,可以尝试以下几种方法。 一、更改IDEA控制台编码: 1. 打开IDEA,点击“File” -> “Settings”进入设置界面。 2. 在左侧导航栏中选择“Editor” -> “File Encodings”选项。 3. 在右侧的“IDE Encoding”下拉框中选择“UTF-8”编码。 4. 在右侧的“Project Encoding”下拉框中选择“UTF-8”编码。 5. 在右侧的“Default encoding for properties files”下拉框中选择“UTF-8”编码。 6. 点击“OK”保存设置,重启IDEA。 二、在代码中指定控制台编码: 1. 在代码的入口处加入以下代码:System.setProperty("console.encoding", "UTF-8");。 2. 重新运行代码,查看控制台输出是否正常显示中文字符。 三、使用正确的字符编码输出中文: 1. 确保代码中的字符串是以UTF-8编码保存的。 2. 在代码中使用合适的编码方式来输出中文字符,例如:System.out.println(new String("你好".getBytes(),"UTF-8"))。 以上是解决全局变量已经是UTF-8,但IDEA控制台输出中文乱码问题的几种方法。根据具体情况选择其中一种或多种方法进行尝试,以确保控制台能正确显示中文字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值