当我解析包含unicode / ASCII元素的HTML页面时,我解决了一个奇怪的行为。这里的例子是git://gist.github.com/2995626.git。
执行的是:
File layout = new File(html_file);
Document doc = Jsoup.parse(layout, "UTF-8");
System.out.println(doc.toString());
我期望的是HTML三角形,但它被转换为“â”。你有什么建议吗?
提前致谢。
答案 0 :(得分:1)
Jsoup完全能够使用UTF-8解析HTML。更重要的是,它已经是默认的字符编码。你的问题是由别处引起的。根据目前提供的信息,我可以看到两个可能的问题原因:
System.out
所在的地方)不使用UTF-8。如果您确保两者都设置正确,那么您的问题就会消失。如果没有,那么还有另一个可能的原因,根据你问题中到目前为止提供的信息是无法猜测的。至少,这个博客应该带来许多新见解:Unicode - How to get the characters right?
答案 1 :(得分:0)
这是由unicode引起的问题。在这里你可以有一个例子。您可以尝试下面的代码。结果将显示您编写的代码无法正常工作的原因。
public static void main(String[] argv) {
String test = "Ch\u00e0o bu\u1ed5i s\u00e1ng";
System.out.println(unicode2String(test));
}
/**
* unicode 转字符串
*/
public static String unicode2String(String unicode) {
StringBuffer string = new StringBuffer();
String[] hex = unicode.split("\\\\u");
string.append(hex[0]);
for (int i = 1; i < hex.length; i++) {
// 转换出每一个代码点
int data = Integer.parseInt(hex[i], 16);
// 追加成string
string.append((char) data);
}
return string.toString();
}
也许您的代码应该如下:
System.out.println(unicode2String(doc.toString()));