对于整个编码问题的根本分析思路可以先参考我的另一篇博客:网页设计中文乱码原理剖析
本文从三个方面解析JAVA与IDEA的编码问题
1. 代码源文件的编码与javac编译器读取源文件使用的编码
2. java程序输出编码与显示控制台使用的编码
3.properties文件的编码问题
代码源文件的编码与javac编译器读取源文件使用的编码需一致
首先IDEA关于编码的设置主战场如下图:
Global Encoding作为IDE的全局编码,Project Encoding为System Default时生效,当Project Encoding不为System Default时,以Project Encoding为准。
经过一天的研究,发现IDEA这一块的功能还不是很完善成熟的,特别是一个Project中使用不同编码的*.java文件时,极其容易出现各种不确定的编码问题(目前用的是IDEA 2019.3,不知道以后会不会优化)。所以个人的建议是,一个Project的所有*.java最好是使用同一种编码,并且必须与此处的设置要一致,下方的特定文件编码列表只用于配置文件、属性文件或其他不含*.java的文件夹(最好是完全不要手工去编辑添加这个特定文件编码列表,IDEA会自动添加你的特定文件)。该处的设置主要是决定javac编译源文件时读取源文件用的编码,源文件与javac读取源文件所用的编码必须一致,否则,在java运行字节码文件时,无论怎么配置,都不大可能产生正确的输出,因为在编译阶