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