org.htmlparser.util.EncodingChangeException

[size=medium]
org.htmlparser.util.EncodingChangeException: character mismatch (new: — [0x2014] != old:  [0x2015―]) for encoding change from GB2312 to GBK at character offset 16022
at org.htmlparser.lexer.InputStreamSource.setEncoding(InputStreamSource.java:280)
at org.htmlparser.lexer.Page.setEncoding(Page.java:865)
at org.htmlparser.tags.MetaTag.doSemanticAction(MetaTag.java:150)
at org.htmlparser.scanners.TagScanner.scan(TagScanner.java:69)
at org.htmlparser.scanners.CompositeTagScanner.scan(CompositeTagScanner.java:160)
at org.htmlparser.util.IteratorImpl.nextNode(IteratorImpl.java:92)
at org.htmlparser.Parser.parse(Parser.java:701)
at crawl.ParserLink.getLink(ParserLink.java:36)
at main.Test.main(Test.java:93)

解决办法:
修改htmlparser.jar中的org.htmlparser.tags.MetaTag.java,修改如下:
public void doSemanticAction() throws ParserException {
String httpEquiv;
String charset;

httpEquiv = getHttpEquiv();
if ("Content-Type".equalsIgnoreCase(httpEquiv)) {
if (Page.DEFAULT_CHARSET == getPage().getEncoding()) {
charset = getPage().getCharset(getAttribute("CONTENT"));
getPage().setEncoding(charset);
}
}
}
[/size]


或者:
1.采用httpclient解析网页并返回html
2.直接调用 paser.setInputHTML(httpclient返回的html);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值