从导出的 jar 运行时,将希伯来语写入文件变成乱码

我有一个小程序,可以将一些希伯来字母和一些数字写入一个用 JAVA 编写的文件中。当我从 Eclipse 运行程序时,希伯来语写得很好,但是如果我将它导出到一个可执行的 JAR 文件中并从那里运行它,希伯来语就会变成胡言乱语


我的代码:


if (content.length() > 0) {

    FileWriter fileWriter = new FileWriter(path);

    BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);

    bufferedWriter.write(content);

    bufferedWriter.close();

}

我还尝试使用 OutputStreamWriter 自己设置编码:


if (content.length() > 0) {

    BufferedWriter bufferedWriter = new BufferedWriter

        (new OutputStreamWriter(new FileOutputStream(path), "windows-1255"));

    bufferedWriter.write(content);

    bufferedWriter.close();

}

我试过的编码:

  • ISO-8859-8

  • 视窗-1255

  • x-IBM856

  • IBM862

  • IBM424

  • UTF-8

当我从 eclipse 运行程序时,其中一些返回正确的希伯来语,但是当从 JAR 文件运行时,所有这些都将希伯来语转换为不同类型的乱码。我什至不确定代码本身的编码是问题还是解决方法。

我在 Windows 10 上使用批处理文件运行 JAR。我的 Java 版本信息:

  • java版本“10.0.1” 2018-04-17

  • Java(TM) SE 运行时环境 18.3(构建 10.0.1+10)

  • Java HotSpot(TM) 64 位服务器 VM 18.3(构建 10.0.1+10,混合模式)

使用 UTF-8 时的输出示例

希伯来文文件中的一行(由 eclipse 生成):

210001         188      13 04/09/1804/09/18                                            50.00         1           123456789  לירון קטלן                               הרא"ה 291                                     רמת גן                                                                     6013

来自乱码文件(从 JAR 生成)的同一行:

210001         188      13 04/09/1804/09/18                                            50.00         1           123456789  ×œ×™×¨×•×Ÿ ×§×˜×œ×Ÿ                               ×”ר×�"×” 291                                     ×¨×ž×ª ×’ן                                                                     6013

不要介意额外的空格,它们应该在那里。


沧海一幻觉
浏览 200回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java