Java -Dfile.encoding=UTF-8 遭遇乱码

这篇博客讨论了在Java程序中遇到的乱码问题,特别是当使用-Dfile.encoding=UTF-8参数时。作者通过在不同环境下执行Java程序并比较系统属性差异,发现file.encoding属性在Mac OS中导致乱码的关键因素。解决方案包括在启动脚本中添加-Dfile.encoding=UTF-8参数或通过修改打包应用的方式来确保默认编码。
摘要由CSDN通过智能技术生成

Java -Dfile.encoding=UTF-8 遭遇乱码问题的来龙去脉
这两天写了一个 Java 程序来玩,结果又遭遇了以前遇到过很多次的乱码问题,具体描述一下:
在 Mac 系统里面,常用的 Java 程序启动方式有如下几种:
1.通过 eclipse 执行 class 入口文件启动;
2.在 Terminal 里面用 java Test.class 或 jave -jar Test.jar 启动
3.通过 ant 执行 class 入口文件启动;
4.直接用 ant 执行 jar 文件;
5.用 Mac OS CoreServices 中的 Jar Launcher.app 执行 jar 文件。
6.用 Mac OS 自带的 Jar Bundler.app 将 jar 文件包装成 app,然后执行

执行途径还是相当地丰富,但以不同的方式来执行,从控制台中得到的程序输出也不一致
比如说,刚刚在 eclipse 中还能正常打印出来的汉字,在打成 jar 包以后,
双击该 jar 文件以 Jar Launcher.app 的方式来启动,打印出来的文字就成了乱码了。
毕竟写出来的 java 程序最终还是要打成 Jar 包来使用的,总不能每次都在 eclipse 中启动吧?
前面说过,不是第一次碰到这种问题了,于是便想着要把这个问题给解决下。
灵机一动之下想到一个好办法,在这些启动方式下均把 System 中的属性遍历打印出来,
然后用 git 来做各个版本的差异比较,有可能会套出一些蛛丝马迹~
抱着试一试的想法实践了一把,果然发现一些猫腻,集中体现在 file.encoding 这个属性上面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你使用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编码读取文件。 希望这些解决方法能帮助你解决乱码问题。如果问题仍然存在,请提供更多信息,我们将尽力帮助你解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值