2016-09-14 83 views
-1

我试图导入.dat text file既包括希伯来文和英文字符转换成Java程序使用Eclipse霓虹灯4.6.0:Eclipse 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是否会不必要地强制使用特定的无用编码?

+0

检查您的终端的输出编码。 – chrylis

+0

你如何阅读文件?你指定了一个字符集吗?旧的基于'File'的读写器默认为JVM默认字符集,而基于'Path'的读写器默认为UTF-8。 * input *文件本身的实际编码是什么?你想在*输出*文件上进行什么编码? – Andreas

+1

使用InputStreamReader构造函数,该构造函数接受明确的字符集并为相关文件使用适当的字符集。 –

回答

0

根据this answer,您需要将项目编码设置为UTF-8。最好的办法做,如果你将工作涉及希伯来文字符等项目是改变编码为您的工作空间:

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

2:UTF-8 encoding setting in the bottom left corner

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