【发布时间】: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