SAX解析器不能识别窗口-1255编码(SAX Parser doesn't recogni

2019-09-26 14:00发布

我工作在Android上的RSS解析器(升级解析器我在互联网上找到)。 据我所知SAX解析器从XML标签自动识别编码,但是当我试图解析申报编码不对它进行分析并抛出和异常窗户-1255的饲料。 我试过几件事情:

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

它识别编码为UTF-16。

请帮我解决这个恼人的问题! 对不起,我的代码混乱片段中的代码按钮拒绝出于某种原因。

Answer 1:

机会是平台本身并不了解“窗口-1255”编码。 毕竟,这是一个基于Windows的编码-我不想依赖它是可用在任何其他平台,这里的东西一般都砍倒在“必须拥有”的选项特别是移动的。



Answer 2:

您需要将编码设置为使用InputStreamReader。

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

从的javadoc从InputSource中读取逻辑是这样的:

  • 是否有一个字符流? 如果有,请使用(这是如果你使用像InputStreamReader的一个读者会发生什么)

除此以外:

  • 没有字符流? 使用字节流。 (InputStream的)
  • 是否有InputSource的设置编码? 使用
  • 有没有编码设置? 尝试从XML文件解析编码


文章来源: SAX Parser doesn't recognize windows-1255 encoding