IntelliJ IDEA 真的是一款很方便的Java开发工具,但是关于中文乱码这个问题我不得不吐槽,这个编码也弄得这么麻烦干嘛,真想找idea开发者干架,我敢打包票我能在一分钟之内一拳飞过去让他跪下掐指住我的人中求我不要死 ~我有一块托大的腹肌,害羞~ 咳咳,扯远了,下面就讲一下怎么解决常见的中文乱码问题。
1. 查看自己的项目的jdk 版本,有没有前后不对应的 。比如自己的项目是jdk是1.8的,然后在idea中的 .iml文件中显示是18的。当初作者就是这里错误 更改后可以。
2.查看项目的有没有配置jdk
3. 模块和idea iml文件是否都是jdk版本相同
4.设置文件编码格式
5.查看左下角编码格式
6.查看maven
7.编辑加入 -Dfile.encoding=UTF-8 不要有空格
8. html编码格式
9.上方导航栏“Run→Edit Configurations…”进入配置页面 加入 -Dfile.encoding=UTF-8
10 找到idea的安装目录——> bin——>找到下图文件并分别在这两个文件内容的末尾添加如下代码
-Dfile.encoding=UTF-8
11.控制台打印乱码(又包含3种):
IDEA启动时控制台打印乱码
log4j的logger.info()控制台打印乱码
system.out.println()控制台打印乱码(sout是基于GBK编码的)
11.1IDEA Tomcate启动时控制台打印乱码
根据Intellij IDEA控制台输出,Tomcat Catalina Log出现乱码,因此可以将问题定位到Tomcat上。那么,我们看看Tomcat控制台是否出现乱码。如老夫所料果然乱码,见下图
解决IDEA Tomcat输出乱码一共两种方案任选一种即可,备注:如下(方案一)与(方案二)不能同时设置。
(方案一)
用Notepad++打开Tomcat安装源码conf文件夹下的logging.properties文件。
打开Intellij IDEA,乱码问题解决
再打开Tomcat控制台也不显示乱码
(方案二)
打开Intellij idea安装目录,在bin目录下的idea.exe.vmoptions和idea64.exe.vmoptions两个文件结尾添加 -Dfile.encoding=UTF-8(注意不要出现空格)
配置Tomcat VM options值为:-Dfile.encoding=UTF-8(解决system.out.println()乱码问题)达到我们目的。
12 如果已经按照前面设置都没问题,但是仍然还是乱码,怎么解决?,这个时候只有一种解释:IDEA把你的字体编码弄错了,怎么解决了?在项目的目录下有个.idea的文件夹,这个文件夹里有个encodings.xml的文件。里面记录了你某些文件对应的特殊编码,为什么会有这种编码呢,有时我们无意中点了右下角的编码,改了一下,就被idea记录到 encodings.xml中,当你再次访问的时候,它就会用那种编码。IDEA这么能干你妈知道吗?只要把encodings.xml里面的除了UTF-8的都删了就好啦(我的所有字体都是UTF-8)!或者把encodings.xml文件干掉(会重新生成)
13. Thymeleaf 渲染网页时中文乱码的问题
@Testpublic void test2(){ // resources main.htmlTemplateEngine templateEngine = new TemplateEngine();//读取磁盘中的模版文件ClassLoaderTemplateResolver resolver =new ClassLoaderTemplateResolver();resolver.setCharacterEncoding("UTF-8");String encoding = resolver.getCharacterEncoding();System.out.println(encoding);// 设置引擎使用 resolver;templateEngine.setTemplateResolver(resolver);Context context = new Context();context.setVariable("name","张三");String result = templateEngine.process("main.html", context);System.out.println(result);System.out.println("你哦好");}
解决方案
首先在注册 Thymeleaf 的时候模板解析器 TemplateResolver 设置编码为“UTF-8”。
然后 Thymeleaf视图解析器的配置处也需要设置编码为“UTF-8”。
以上两者缺一不可,否则中文还是乱码。
注意:网页内容的编码方式别忘了(<meta charset="UTF-8" />)
14解决SpringBoot乱码问题汇总
前言 配置CharacterEncodingFilter在ResponseBody上添加produces读取yaml文件错误
总结配置CharacterEncodingFilter
SpringBoot默认会帮我们配置好基本的CharacterEncodingFilter,不过为了保险起见可以在yaml文件中再次配置,也可以自己在Configuration类中创建一个用自己的CharacterEncodingFilter
server:servlet:encoding:charset: UTF-8enabled: trueforce: true
@Configurationpublic class MyConfiguration extends WebMvcConfigurationSupport {@Beanpublic CharacterEncodingFilter characterEncodingFilter(){CharacterEncodingFilter filter = new CharacterEncodingFilter();filter.setEncoding("UTF-8");filter.setForceEncoding(true);return filter;}}
在ResponseBody上添加produces
@RequestMapping(value = "/hello",produces = "application/json;charset=utf-8")public User hello() throws Exception{log.info("==============>进入了Hello方法");return user;}
重启IDEA开发工具(一定要重启),再启动工程,乱码问题解决。
还是不行,重启电脑,卸载重新安装ide
如果觉得《最全的IntelliJ IDEA 控制台中文乱码》对你有帮助,请点赞、收藏,并留下你的观点哦!