java运行时,内存中使用的字符编码是unicode。
在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件。(引自http://hank4ever.iteye.com/blog/581463)
可以使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java
运行jar包时,结果出现乱码可能就是未指定编码方式,在中国,windows的默认编码是GBK,故需要如下指定
java -Dfile.encoding=utf-8 -jar project.jar