【问题标题】:Eclipse Java imports weird non-Hebrew characters instead of hebrew in file - Encoding issue?Eclipse Java 在文件中导入奇怪的非希伯来语字符而不是希伯来语 - 编码问题?
【发布时间】:2016-09-14 21:26:10
【问题描述】:

我正在尝试使用 Eclipse Neon 4.6.0 将包含希伯来语和英语字符的 .dat text file 导入到 java 程序中:

String[] getFile(String path) throws IOException
{
    BufferedReader in = new BufferedReader(new InputStreamReader(this.getClass().getResource("../../../t3utf.dat").openStream()));
    String l;
    String[] dataFile = new String[23213]; //Does java have push and pop or auto expanding lists?
    int c = 0;
    while ((l = in.readLine()) != null) {
        dataFile[c] = l;
        c++;
    }
    return dataFile;
}

由于某种原因,希伯来语字符被随机乱码替换:

原文:gen|1|1|בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

一旦程序运行一次,所有的希伯来语字符都会被乱码替换:

新:gen|1|1|בְּרֵ×ש×ִ֖ית ×‘Ö¼Ö¸×¨Ö¸Ö£× ×Ö±×œÖ¹×”Ö´Ö‘×™× ×ֵ֥תהַש×Ö¼Ö¸×žÖ·Ö–×™Ö´× ×•Ö°×ֵ֥ת ×”Ö¸×ָֽרֶץ׃

事实上,文件本身变成了乱码——运行程序后在记事本中查看时,字符已经发生了某种变化。

我有一个在 AIDE 中运行在 Android 上的程序版本,它可以正常工作并且没有这个问题。 Eclipse 是否不必要地强制使用特定的无用编码?

【问题讨论】:

  • 检查终端的输出编码。
  • 你是如何阅读文件的?指定字符集了吗?旧的基于File 的读取器/写入器默认为JVM 默认字符集,而新的基于Path 的读取器/写入器默认为UTF-8。 input 文件本身的实际编码是什么? 输出文件你想要什么编码?
  • 使用 InputStreamReader 构造函数,该构造函数采用显式字符集并为相关文件使用适当的字符集。
  • @ThorbjørnRavnAndersen 与更改项目编码相比有什么优势吗?默认为 Cp1252 有什么好处?
  • 取决于您的工作方式。在代码中显式设置编码使其在其他平台和机器上更加健壮。只为你自己,选择最适合你的方法。

标签: java eclipse character-encoding hebrew


【解决方案1】:

根据this answer,需要将项目编码设置为UTF-8。如果您要处理涉及希伯来字符的其他项目,最好的方法是更改​​工作区的编码:

  1. 转到Window Menu -> Preferences -> General -> Workspace

2.:

这将允许您的程序加载希伯来字符,因为 UTF-8 编码包括希伯来字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多