【问题标题】:Reading hebrew from text file with Java使用 Java 从文本文件中读取希伯来语
【发布时间】:2011-08-21 15:06:26
【问题描述】:

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

这是我的阅读方式:

    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));
}

有什么想法吗?

谢谢, 托默

【问题讨论】:

  • 你在读什么而不是'מ'和'א'?
  • 这两个字母各有一个正方形和一个问号。像 - “?ם”
  • 请不要使用 DataInputStream 读取文本。不幸的是,像这样的例子被一次又一次地复制,所以你可以从你的例子中删除它。 vanillajava.blogspot.co.uk/2012/08/…

标签: java utf-8 datainputstream


【解决方案1】:

您使用 InputStreamReader 时未指定编码,因此它使用的是您平台的默认值 - 这可能不是是 UTF-8。

试试:

new InputStreamReader(in, "UTF-8")

请注意,您在这里使用DataInputStream 的原因并不明显......只需在FileInputStream 周围创建一个InputStreamReader

【讨论】:

  • 他是否真的使用了与 UTF-8 兼容的默认编码,除了字符 'מ' 和 'א'?
  • @jarnbjo:我不知道,但这是最明显的起点,而且绝对是我要迈出的第一步。
  • 为什么这么明显?如果他不使用 UTF-8 作为默认编码,读取带有希伯来字符的 UTF-8 编码文件会产生垃圾,而不仅仅是一些被误解的字符。
  • @jarnbjo:当他期望一个特定的编码时不指定编码显然是一件坏事,这就是我的意思。通过指定字符集肯定会改进代码,它可能解决问题。
  • @tomericco:它不应该改变任何东西。听起来您诊断正在发生的事情的方式可能有问题......如果它肯定 UTF-8,那么这就是您应该指定的。如果您在另一个指定 UTF-8 的文本编辑器(不是记事本)中加载该文件,是否有效?
猜你喜欢
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2013-11-08
  • 2011-09-02
  • 2018-10-02
相关资源
最近更新 更多