java -jar utf8_java – 如何强制jar使用(或运行jar的jvm)utf-8而不是系统的默认编码...

我的Windows默认编码是GBK,我的Eclipse完全是utf-8编码的.

因此,在我的Eclipse中运行良好的应用程序崩溃,因为在导出为jar文件时单词变得不可读;

我必须在.bat文件中编写以下行来运行该应用程序

start java -Dfile.encoding=utf-8 -jar xxx.jar

现在我的问题是,我可以在源代码中编写一些内容来设置应用程序使用(或jvm运行)utf-8而不是系统的默认编码.

解决方法:

打开文件进行读取时,需要明确指定要用于读取文件的编码:

Reader r = new InputStreamReader(new FileInputStream("myfile"), StandardCharsets.UTF_8);

然后,默认平台编码的值(您可以使用-Dfile.encoding更改)不再重要.

注意:

我通常建议始终为依赖于标准语言环境的任何操作明确指定编码,例如字符I / O.许多Java API方法默认使用平台编码,我认为这是一种糟糕的设计,因为平台编码通常不是正确的,加上它可能会突然改变(如果用户例如切换操作系统区域设置),打破了你的应用程序.

所以总是说你想要哪种编码.

在某些情况下,平台编码是正确的(例如打开用户刚为您创建的文件时),但它们相当罕见.

笔记2:

java.nio.charset.StandardCharsets是在Java 1.7中引入的.对于较旧的Java版本,您需要将输入编码指定为String(ugh).可能的编码列表取决于JVM,但每个JVM至少保证:

US-ASCII,ISO-8859-1,UTF-8,UTF-16BE,UTF-16LE,UTF-16.

标签:java,encoding,command-line,jar

来源: https://codeday.me/bug/20190926/1822023.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值