天天看点

IntelliJ IDEA中文乱码解决办法

刚刚接触intellij idea几天,在易用性方面的确比eclipse好很多,比较智能,各种插件、工具都已经集成,和mac os x类似——开箱即用,并且在试用了之后在开源中国三折(后悔2折的时候没有下手)购买了授权。

但是还是老大难问题——中文乱码,让我不得不花费了一些时间去折腾它,这一点就不如eclipse了,没有遇到过乱码问题。

乱码问题表现在使用web server(tomcat、jetty)时输出日志或者直接system.out.println("中文字符")时会出现,如果仅仅执行类的main函数没有问题。

我针对乱码问题在不同的环境下进行了测试:

我一直的习惯把系统语言设置为英文(强迫性记忆),这是第一次遇到乱码问题,分析了程序执行参数如下:

执行后得到如下的结果,省略了classpath:

分析参数和编码有关的只有一个:

先说明一下如果系统语言设置为中文是没有乱码问题的,所以网上大量的重复文章的办法是把"file encoding"设置为gbk或者gb2312,但是很多系统的编码不可能因为一个ide而更改编码,所以这种办法直接无视!!!

切换到中文语言后分析执行参数,和英文语言下不同的是:

相信看完了分析已经知道如何解决问题了,因为macroman编码不包含中文所以会出现乱码,而设置系统语言为中文的时候系统默认设置为gb2312编码,所以编码问题自然就没有了。

和项目编码统一,更改intellij idea启动时的编码参数即可,打开下面的配置文件:

找到key等于vmoptions位置,这里设置的虚拟机的参数,在后面追加下面的参数保存文件。

ps:从12.1版本开始默认添加了这个参数

不要以为问题解决了,实际上只完成了一半,因为是运行web server时出现的乱码,所以web server的编码要和idea保持一致:

IntelliJ IDEA中文乱码解决办法

这样ide的编码(控制台编码受ide影响)和web server输出的编码一致问题解决。

启动web server之后再分析jvm的参数可以看到 -dfile.encoding=utf-8。

继续阅读