在执行命令前追加-Dfile.encoding=UTF-8参数,来设置程序启动的字符集便可解决乱码问题。

关于-Dfile.encoding的解释:
在命令行中输入java,在给出的提示中会出现-D的说明:
-D= # set a system property
-D后面需要跟一个键值对,作用是设置一项系统属性
-Dfile.encoding=UTF-8来说就是设置系统属性file.encodingUTF-8
那么file.encoding 什么意思?字面意思为文件编码。
搜索java源码,只能找到 4 个文件中包含file.encoding的文件,也就是说,只有四个文件调用了file.encoding这个属性。
java.nio.charset包中的Charset.java中,这段话的意思说的很明确了。
简单说就是默认字符集是在java虚拟机启动时决定的,依赖于java虚拟机所在的操作系统的区域以及字符集。
代码中可以看到,默认字符集就是从file.encoding这个属性中获取的。