在使用JSoup库解析和呈现页面时遇到Charsets时遇到问题。这是它呈现的页面的示例:
http://dl.dropbox.com/u/13093/charset-problem.html
正如你所看到的那样,应该有'角色'?正在渲染(即使你查看源代码)。
此页面是通过下载网页,使用JSoup进行解析,然后在进行一些结构更改后再次重新呈现来生成的。
我正在按如下方式下载页面:
final Document inputDoc = Jsoup.connect(sourceURL.toString()).get();
当我创建输出文档时,我按如下方式执行:
outputDoc.outputSettings().charset(Charset.forName("UTF-8"));
outputDoc.head().appendElement("meta").attr("charset", "UTF-8");
outputDoc.head().appendElement("meta").attr("http-equiv", "Content-Type")
.attr("content", "text/html; charset=UTF-8");
任何人都可以就我的错误提出建议吗?
编辑:请注意,源页面为http://blog.locut.us/,如您所见,它似乎正确呈现
答案 0 :(得分:4)
每当您将字符写入响应的输出流时,问号都是典型的,而响应的字符编码未涵盖这些问号。在提供响应时,您似乎依赖于平台默认字符编码。您网站的回复Content-Type
标题也会通过缺少charset
属性来确认。
假设您正在使用servlet来提供修改后的HTML,那么您应该在编写修改后的HTML之前使用HttpServletResponse#setCharacterEncoding()
设置字符编码。
response.setCharacterEncoding("UTF-8");
response.getWriter().write(html);
答案 1 :(得分:0)
问题很可能是在阅读输入页面时,您需要对源进行正确的编码。