在cmd中执行jar的编码问题

本文主要以自己的例子叙述了在cmd中执行jar包时,遇到的编码问题,以及解决问题的过程。

问题:程序在eclipse中进行开发,涉及一些IO操作,且需要在不同的机子上跑,因此为了方便,将代码打包成了jar包。但是发现在eclipse中结果运行正确,在cmd中运行结果却错误。对问题进行调试,最后发现问题出在以下代码中:

if(splitLine[8].equals("空车"))

该判断中涉及到了中文字符,数据是从一个utf-8编码的文件中读取的,而我们在eclipse中一般都设置默认编码为utf-8编码,因此可以正确判断。但是cmd默认的却是以gbk编码来执行,因此这里的判断显然会出错。

尝试1:通过改变cmd默认编码方式来执行此jar包
可以通过http://jingyan.baidu.com/article/e75aca85440f01142edac636.html该方式来改变cmd默认编码。即在cmd命令窗口中输入:

chcp 65001

cmd将会进入utf-8编码模式,在该模式下运行jar包
《在cmd中执行jar的编码问题》
但是结果仍然是错误的,该方法并没有改变java在执行时的编码方式。

尝试2:规定执行java时的编码方式
涉及到一些jvm方面的知识,具体的解决方案是在执行java时为jvm规定编码。当我们输入java时可以看到一些参数指令,如下图:
《在cmd中执行jar的编码问题》
其中的-D参数以键值的形式在启动jvm时规定一些输入参数,在本例子中,需要规定的是编码这一参数,cmd中执行时,只需在java后面加上-Dfile.encoding=utf-8即可

java -Dfile.encoding=utf-8 xxxxxxx

本例中,我们对该方案进行尝试,可以看到,问题得到了解决。(该命令无需在chcp 65001模式中执行)

《在cmd中执行jar的编码问题》

    原文作者:游程编码问题
    原文地址: https://blog.csdn.net/gyz666/article/details/68065110
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞