DOS运行jar程序输出文件中文乱码

http://blog.csdn.net/gyz666/article/details/68065110html

个人问题和如上博客同样即:java

问题:程序在eclipse中进行开发,涉及一些IO操做,且须要在不一样的机子上跑,所以为了方便,将代码打包成了jar包。可是发如今eclipse中结果运行正确,在cmd中运行结果却错误。eclipse

个人需求:从多个记事本文件中读取数据,而后写入一个记事本中。jvm

个人问题:写入记事本后中文乱码。工具

如何解决:以键值的形式在启动jvm时规定一些输入参数(cmd中执行时,只需在java后面加上-Dfile.encoding=utf-8便可编码

形成的缘由思考:操作系统

https://jingyan.baidu.com/article/0f5fb099f170566d8334eabf.html.net

如上经验所说:code

 因为JDK是国际版的,在编译的时候,若是咱们没有用-encoding参数指定咱们的JAVA源程序的编码格式,则javac.exe首先得到咱们操做系统默认采用的编码格式,也即在编译java程序时,若咱们不指定源程序文件的编码格式,JDK首先得到操做系统的file.encoding参数(它保存的就是操做系统默认的编码格式,如WIN2k,它的值为GBK),而后JDK就把咱们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。而后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到咱们的操做系统中造成咱们见到的.class文件。对咱们来讲,咱们最终得到的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含咱们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当咱们不加设置就编译时,至关于使用了参数:javac -encoding gbk XX.java,固然就会出现不兼容的状况。htm

个人编译:我使用编码格式为UTF-8的eclipse工具打包生成jar文件

个人运行:使用操做系统自带的DOS环境(GBK编译)解释运行,并写入ANSI格式的记事本

个人生成:带有ANSI中文乱码的文件,使用工具强行转换为utf-8,也会有乱码的中文和格式

相关文章
相关标签/搜索