这是网站本身的错误。实际上是三个错误:
该页面在HTTP 响应标头中 不带 任何字符集的 情况下提供
Content-Type
。有ISO-8859-1
在HTML meta标签,但在页面都通过HTTP这个被忽略!一般的网络浏览器将尝试智能检测或使用平台默认编码对网页进行编码,该网页在Windows计算机上为CP1252。该
<meta>
标签假装内容编码ISO-8859-1,但实际的字符–
(U + 2013 EN DASH)是 不能 覆盖由字符集的。但是,CP1252字符集将其覆盖为0x0096
。根据网页源代码,产品名称使用原义字符
–
而不是HTML实体–
,而HTML实体是在同一网页上其他位置发现的。
Jsoup可以透明地修复许多不良开发的网页,但这确实超出了Jsoup的范围。您需要手动读取它,然后将其作为CP1252馈入Jsoup。
String url = "http://www.gudi.ch/armbanduhr-metall-wasserdicht-1280x960-megapixels-p-560.html";InputStream input = new URL(url).openStream();document doc = Jsoup.parse(input, "CP1252", url);String title = doc.select(".products_name").first().text();// ...


