coderxz 发表于 2020-7-31 08:41

IntelliJ IDEA 中输出乱码解决

最近tomcat突然在控制台输出乱码,各种乱码问题,查阅大量的资料,最终得以解决.


## IDEA控制台输出乱码

### 问题一:idea中tomcat控制台输出乱码

- 运行本地的tomcat\bin\start.bat文件页面显示正常


![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524202705994.png)

- 在idea中显示乱码

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524202716309.png)



**解决:**

>根据网上查阅的资料,进行以下的尝试

###### 1.修改windwos的默认编码格式

根据网上的资料,可能是windows的编码问题,于是乎;

```java
chcp #查看当前cmd的编码格式
chcp 65001   #换成utf-8代码页
chcp 936       #换成默认的gbk
chcp 437       #美国英语
```

好像并没有啥用。。。。。<font color='red'>如果发现修改没有效果的小伙伴,在进行下一步尝试一定要先修改回去,再继续下面的尝试!</font>

###### 2.idea中的修改

>因为tomcat的start.bat文件输出并没有乱码,于是乎,我感觉是idea中的编码没有设置好,做出如下设置:Settings/Editor/File Encodings/设置编码格式为UTF-8



![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524203346933.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)

> Help->Edit Customer VM Options
> 中添加:```-Dfile.encoding=UTF-8```

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524203443455.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)



> 在java Complier中设置Additional command line parameters的值,
> ```-encoding=UTF-8```,很可惜还没生效

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524211719553.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)



###### 3.tomcat配置文件中修改

> 上述方案均尝试过了,任然没有解决我的问题;
> 于是乎:tomcat / conf / logging.properties下:

**增加或修改参数** ```java.util.logging.ConsoleHandler.encoding = GBK ```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524203943809.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)





><font color='red'>如果你的控制台不是突然就出现乱码了,那么上述方式基本能解决你的问题。</font>
>这里我发现我的环境是:此处已经是GBK了,于是乎控制台输出乱码的问题依旧没有解决,唉!
>我稍微尝试了一下把此处的GBK修改为UTF-8,嘿!此时我的IDEA控制台输出乱码解决了!!!震惊!!!
>但是!!!,我直接打开tomcat\bin\start.bat下的输出却出现了乱码!!我吐了,这两边的乱码不可兼顾。。。。。没办法,请教了老师,因为我的是突然出现的,应该是我不小心将哪里的编码修改了,我不知道。<font color='red'>这里提醒小伙伴修改后,发现不起作用一定要该回去,因为不知道底层的代码,只能这样慢慢尝试</font>



最后:重新安装了一个tomcat,问题解决了!!!,&#128565;

## IDEA中web项目静态资源页面乱码

### 问题二:HTML和JSP页面输出乱码

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524204924440.png)
**解决:**

###### 1.Html页面乱码:在head中加入:

```html
<META http-equiv=Content-Type content="text/html;charset=utf-8">
```

###### 2.JSP页面中加入:

```java
<%@ page contentType="text/html;charset=utf-8" language="java"%>
```

###### 3.为解决页面数据传输中文问题,在web.xml中加入:

```xml
<!--中文乱码过滤器-->
<!--中文乱码过滤器-->
    <filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
      </init-param>
      <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>encodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>
```

###### 4.设置mysql编码为utf-8:

```java
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8
```

###### 5.设置tomcat编码:为解决以get方式提交的参数出现乱码,添加(只需要添加```URIEncoding="UTF-8"```)

```xml
<Connector port="8080" protocol="HTTP/1.1"   
            connectionTimeout="20000"   
            redirectPort="8443" URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3"
            redirectPort="8443"
               URIEncoding="UTF-8" />
```

###### 6.针对IDEA的中tomcat server配置:

>上述添加头部的编码等等,均没有解决问题;于是乎;

- 在tomcat Server中设置 VM options , 值为```-Dfile.encoding=UTF-8 ```,**可惜没生效**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524205958430.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)
- 在tomcat Server中设置,有用```JAVA_TOOL_OPTIONS=-Dfile.encoding\=UTF-8```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200524210012727.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)
终于html输出正常了!!!
但是如果我们每次启动不同的工程都需要配置,相当麻烦。。。
**最终:在tomcat\bin\catalina.bat文件中,添加:**
```set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF8```
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020052421013957.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NjM5MjMy,size_16,color_FFFFFF,t_70)

HighBox 发表于 2020-7-31 10:25

Tomcat配置文件里UTF-8的地方全部改成GBK

JustQin 发表于 2020-7-31 10:39

我就觉得你第一个操作有问题,其他软件都好好的,就这一个软件有问题,你竟然去改操作系统的配置

smallmin 发表于 2020-7-31 11:39

输出信息的那个乱码其实影响不大,大可不必去修改tomcat的配置文件,避免项目其他地方出现乱码的情况

fangdongjiadema 发表于 2020-8-2 23:41

HighBox 发表于 2020-7-31 10:25
Tomcat配置文件里UTF-8的地方全部改成GBK

对,我以前一直这样改的

田三水 发表于 2020-8-3 08:45

先收藏,到时候出现问题了在看看帖子

fsrank 发表于 2020-8-3 09:36

编码问题的确有点烦, 总是不经意出现

zhangyyue 发表于 2020-8-3 15:35

{:301_973:}不知为何,我有个Gradle 的java项目,不管怎么改,报的错永远是乱码

o梦逸流苏o 发表于 2020-11-24 22:42

smallmin 发表于 2020-7-31 11:39
输出信息的那个乱码其实影响不大,大可不必去修改tomcat的配置文件,避免项目其他地方出现乱码的情况

问题大的很Tomcat高版本默认以UTF8输出 若你不改 日志bug调试的时候你根本不知道报什么错或日志打的什么错   因为乱码了   原因是就是因为win10 默认是GBK编码Tomcat默认UTF8两点解决方法
一、Tomcat conf配置utf8全改gbk或者 系统区域设置高级设置 系统编码以UTF8 运行(这种需要重启) 就行了
页: [1]
查看完整版本: IntelliJ IDEA 中输出乱码解决