我正在使用DOM对象读取一个包含阿拉伯数据的xml,该数据的所有行均以UTF-8编写,但CP1256中写的一行除外,在解析时,默认情况下它解析为UTF-8巫婆,给出“奇怪的字母” CP1256行,如何告诉DOM解析器将此行解析为CP1256,
请检查XML:http://alingilalyawmi.org/rss/v2/evangelizo_rss-maa.xml
在notepad ++中打开它时,您将意识到在将编码更改为cp1256之前,其中的数据是不可读的。

最佳答案

如果您知道如何隔离一行,则可以打开输入流。然后创建自己的Reader类,包装两个InputStreamReader,一个配置为UTF8,另一个配置为CP1256。然后使用UTF8阅读器,直到到达CP1256线,再切换到另一个阅读器,然后再返回。最后,只需在自定义阅读器类上使用解析器即可。您必须为解析器创建一个InputStream。从文档:

The SAX parser will use the InputSource object to
determine how to read XML input. If there is a
character stream available, the parser will read
that stream directly, disregarding any text encoding
declaration found in that stream.

10-04 17:46