文章背景
我们经常会在项目的配置文件,代码,运行时的控制台日志等等地方发现许多乱码,这很主要的原因是开发者在开发项目之前没有做好开发工具的编码格式的设置,这在很大程度上提现了开发者的不专业程度,所以建议大家开发项目之前一定要提前配置好IDE,tomcat,maven等工具的编码格式.
我的同事曾经遇到过这样的问题.他在开发项目前没有先设置IDE的代码文件的编码格式使用了默认的编码格式,这导致他写出来的每个代码文件的编码格式都和其他同事的不同,其他同事打开它写的文件都显示乱码,本想通过修改编码格式看看能否将他的文件编码格式进行统一,结果却发现不行,必须删除后重新编写,这样就产生了许多无用功,影响工作效率.
idea设置编码格式
在默认情况下,我们新建的项目的文件编码格式是跟随系统的,我们可以看一下idea 的默认编码设置
从上图可以看到配置编码的地方有4个:
1. Global Encoding:UTF-8
2. Project Encoding: System Default
3. File/Directory Encoding: UTF-8
4. Properties files Encoding:System Default
前三个是配置项目中文件的编码,不包括properties配置文件。
这三个选项存在优先级,在idea官网中 https://www.jetbrains.com/help/idea/settings-file-encodings.html 是这样介绍的 File/Directory Encoding 优先于 Project Encoding,Project Encoding 优先于 Global Encoding,所以一般设置一下项目的File/Directory Encoding 为 UTF-8 即可, 当然也可以三个都选为UTF-8
Properties files Encoding设置
下面我们介绍下Properties files Encoding 这个设置,这个也是我写这篇文章的重中之重,不知道大家有没有注意到后面的复选框 Transparent native-to-ascii conversion 或者是一直对这个复选框比较疑惑下面就着重给大家介绍一下这个复选框的重要作用
它直接翻译过来是: 透明的将本地编码转换成ascii编码
首先我们看一下,如果我们没有勾选,前面的roperties files Encoding设置为GBK编码格式,然后对test.properties文件进行编辑,内容包含中文,其他人再通过UTF-8的编码格式打开,就会发现配置中的中文为乱码,这个大家可以自行测试,我就不传图片了
然后,我们将复选框勾选上,注意:此时前面的properties编码格式随便设置都可以,新建个test2.properties文件进行编辑,内容包含中文,然后再使用notepad++打开就会出现下图的样子,这是因为Transparent native-to-ascii conversion
这个设置将我们输入的所有字符转换成Unicode序列码保存了,即:配置文件存储是转义序列,显示为普通字母的一种特殊模式, 如果你没有其他特殊原因需要更改编码,建议勾选。
最后,如果你一开始没有勾选,并使用非UTF-8编码格式编辑配置文件,中途突然想起来勾选它,这个时候就不能生效了,那么其他人以UTF-8格式打开仍然是乱码,所以强烈建议大家在配置的时候勾选它,同时将编码格式设置为UTF-8
idea每次新打开项目都需要重新设置编码格式该怎么解决?这个问题也曾困扰过我
下面这个设置也很重要,
再设置一遍!!!!!