SAX Parser无法识别windows-1255编码

时间:2012-03-29 18:13:06

标签: java android encoding rss sax

我正在使用android中的rss解析器  (升级我在互联网上找到的解析器)。 据我所知,SAX Parser从xml标签自动识别编码,但是当我尝试解析声明windows-1255编码的feed时,它不会解析它并抛出异常。 我尝试了几件事:

  1. final InputSource source = new InputSource(feed);
    Reader isr = new InputStreamReader(feed);
    source.setCharacterStream(isr);
    
  2. 我甚至试过告诉他具体的编码。

    source.setEncoding("Windows-1255");
    
  3. 试图查看定位器:

    @Override
    public void setDocumentLocator(Locator locator) {
    }
    
  4. 它将编码识别为UTF-16。

    请帮我解决这个恼人的问题! 很抱歉代码片段很乱,代码按钮由于某种原因拒绝工作。

2 个答案:

答案 0 :(得分:2)

机会本身并不知道“windows-1255”编码。毕竟,这是一个基于Windows的编码 - 我不希望依赖它可以在任何其他平台上使用,特别是那些通常被削减为“必备”选项的移动平台

答案 1 :(得分:1)

您需要将编码设置为InputStreamReader。

Reader isr = new InputStreamReader(feed, "windows-1255");
final InputSource source = new InputSource(isr);

javadoc开始,从InputSource读取的逻辑就像这样:

  • 有字符流吗?如果有的话,使用它(如果你使用像InputStreamReader这样的读者会发生这种情况)

否则:

  • 没有角色流?使用字节流。 (InputStream的)
  • 是否有InputSource的编码集?使用那个
  • 没有编码设置?尝试解析xml文件中的编码