java 打包成jar(可运行)方法以及UTF-8编码乱码等问题解决

打包成可直接运行的Jar(包含lib库),如果附带还有data等数据文件,需要手动创建一下。

编码问题:在eclipse调试时没问题,但是打包成jar就乱码了,。java文件都是utf-8,所用的数据文件也是utf-8,文件读取没问题,就是显示出现问题:

可写一个启动bat,将start.bat改为java -jar  -Dfile.encoding=utf-8 YourName.jar,问题就可以轻松解决。

如果还未解决,请修改cmd程序的编码注册表信息:

对于编译出的程序,在 cmd 和 power shell 运行时都不能正确显示汉字。 
网上查,可以再命令窗口修改: 
1、打开CMD.exe命令行窗口 
2、通过 chcp命令改变代码页,UTF-8的代码页为65001 
chcp 65001 
执行该操作后,代码页就被变成UTF-8了。

在当前窗口的确可以解决问题,但是重新打开的cmd窗口或者power shell 窗口仍然不能正确显示汉字



最终发现,cmd的属性设置可以在注册表中修改,实现一次修改永远有效: 
1. win+R 输入regedit 进入注册表 
2. 找到 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe 如果 该项下已存在CodePage项,则把值改为十进制”65001”;如果不存在,在该项下新建一个 DWORD(32位值),命名为“CodePage”,值设为“65001” 
3. 重启cmd后生效 
4. 对于Power shell修改同样,只需在第2步修改 
%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe 下的项。

jar读取txt文件乱码问题: 

Java代码 

  1. BufferedReader read = new BufferedReader(new FileReader(new File(filename)));  

解决办法: 

  1. InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");  
  2. BufferedReader read = new BufferedReader(isr);  

因为InputStreamReader和BufferedReader 都继承自Reader,而BufferedReader 的构造器又是Reader. 

Writer也是一样的处理 

Java代码 

  1. FileOutputStream writerStream = new FileOutputStream(filePath, true);  
  2. BufferedWriter oWriter = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));  
  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
你使用Java命令启动一个jar文件时遇到了乱码问题,是这样吗?乱码问题通常与文件编码设置有关。在你的命令中,使用了`-Dfile.encoding=UTF-8`参数来设置文件编码UTF-8,但仍然遇到了乱码问题。 首先,确保你的jar文件本身是以UTF-8编码保存的。如果jar文件使用其他编码保存,可能会导致乱码问题。可以使用文本编辑器打开jar文件,检查并确认编码设置为UTF-8。 另外,也要确保你的系统环境变量中设置了正确的默认编码。在Windows系统中,可以通过以下命令来查看当前默认编码: ``` chcp ``` 确保输出结果为`Active code page: 65001`,表示默认编码UTF-8。如果不是UTF-8,请使用以下命令来更改默认编码: ``` chcp 65001 ``` 如果你在Linux或Mac系统上运行Java程序,可以通过以下命令来检查默认编码: ``` echo $LANG ``` 确保输出结果为`en_US.UTF-8`或类似的UTF-8编码。如果不是UTF-8,请参考你使用的操作系统文档来修改默认编码。 如果以上步骤都已确认无误,但仍然遇到乱码问题,可能需要检查你的程序代码是否正确处理了字符编码。在读取文本文件或处理字符串时,确保使用了正确的编码方式,例如使用`InputStreamReader`指定UTF-8编码读取文件。 希望这些解决方法能帮助你解决乱码问题。如果问题仍然存在,请提供更多信息,我们将尽力帮助你解决

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值