读书人

webharvest 配置文档出现乱码的解决办

发布时间: 2012-09-18 16:21:42 作者: rapoo

webharvest 配置文档出现乱码的解决方法

?

只要把ScraperConfiguration源码的输入源由inputSource改成inputStream,那么SAX 解析器将会自动检测编码。
public class InputSource
extends Object

XML 实体的单一输入源。

此模块(包括源代码和文档)在公共域中,同时?没有担保有关更多信息,请参阅http://www.saxproject.org。

此类允许 SAX 应用程序封装有关单个对象中的输入源的信息,它可包括公共标识符、系统标识符、字节流(可能带有指定的编码)、基本 URI 和/ 或字符流。

在以下两种情况下应用程序可以将输入源提供给解析器:作为 Parser.parse 方法的参数,或者作为 EntityResolver.resolveEntity 方法的返回值。

SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入。如果有字符流可用,则解析器将直接读取该流,而忽略该流中找到的任何文本编码声明。如果没有字符流,但却有字节流,则解析器将使用该字节流,从而使 用在 InputSource 中指定的编码,或者另外(如果未指定编码)通过使用某种诸如 XML 规范 中的算法算法自动探测字符编码。如果既没有字符流,又没有字节流可用,则解析器将尝试打开到由系统标识符标识的资源的 URI 连接。

InputSource 对象属于该应用程序:SAX 解析器将不会以任何方式修改它(它可以在必要时修改副本)。但是,作为解析终止清除的一部分,对字节流和字符流的标准处理就是关闭这二者,因此在将此类流传递给解析器后应用程序不应尝试重新使用它们。


改进 InputSource 构造

package org.webharvest.definition;
public class ScraperConfiguration {...
public ScraperConfiguration(File sourceFile) throws FileNotFoundException {        this.sourceFile = sourceFile;//      InputSource inputSource = new InputSource(new FileReader(sourceFile));        InputSource inputSource = new InputSource(new FileInputStream(sourceFile));        inputSource.setEncoding("UTF-8");         createFromInputStream( inputSource );    }
?

?

读书人网 >Web前端

热点推荐