2011-05-09 67 views
2

我在用希伯来语阅读UTF-8编码文本文件时遇到麻烦。 我成功读取了所有希伯来字符,除了两个字母='מ'和'א'。从Java文本文件中读取希伯来文

这是我如何读它:

FileInputStream fstream = new FileInputStream(SCHOOLS_LIST_PATH); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
String strLine; 

// Read File Line By Line 
while ((strLine = br.readLine()) != null) { 

       if(strLine.contains("zevel")) { 

        continue; 
       } 

       schools.add(getSchoolFromLine(strLine)); 
} 

任何想法?

感谢, 托梅尔

+1

你在读什么而不是'מ'和'א'? – jarnbjo 2011-05-09 11:39:15

+0

正方形和这两个字母中的每一个的问号。类似于 - “?” – tomericco 2011-05-09 15:07:49

+0

请不要使用DataInputStream来读取文本。不幸的是,这样的例子会被一次又一次地复制,所以你可以从你的例子中删除它。 http://vanillajava.blogspot.co.uk/2012/08/java-memes-which-refuse-to-die.html – 2013-01-31 00:10:22

回答

4

您使用的InputStreamReader没有指定编码,所以它的使用平台的默认 - 这很可能是UTF-8。

尝试:

new InputStreamReader(in, "UTF-8") 

注意,它为什么你使用DataInputStream ......在这里只需要创建FileInputStream围绕InputStreamReader并不明显。

+1

是否真的有可能他使用的是与UTF-8兼容的默认编码,除了字符'מ'和'א'? – jarnbjo 2011-05-09 11:38:45

+0

@jarnbjo:我不知道,但这是最明显的起点,这绝对是我要采取的第一步。 – 2011-05-09 12:06:12

+0

为什么这很明显?如果他不使用UTF-8作为默认编码,则用希伯来字符读取UTF-8编码的文件会产生垃圾,而不仅仅是几个被误解的字符。 – jarnbjo 2011-05-09 12:22:26