Java UTF-8编码问题

3
我正在使用一个称为 HTMLCLEANER 的HTML解析器来解析网页。问题在于每个页面的编码都不同。我的问题是:
我能否将任何字符编码更改为UTF-8?
4个回答

3

如果你想要无缝地从编码X转换为编码Y,就需要事先知道编码X。只需检查HTTP响应头使用的编码(如果你是通过HTTP获取这些HTML页面),然后在你的HTML解析工具中使用适当的编码即可。


1
我可以从任何字符编码转换为UTF-8吗?
是的,您可以使用UTF-8编码表示任何Unicode字符。
但是,在更改HTML页面的编码时可能会出现问题:如果页面包含“charset”元标记,则需要相应地更改该标记以确保正确解释页面。
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

你必须更新此标记,以使其对应实际编码。


他正在解析一个HTML页面,而不是生成一个HTML页面。此外,这行代码实际上是指示客户端使用哪种编码来解析给定的HTML页面(这正是OP事先不知道并因此需要在响应头中查找的信息!)。 - BalusC

1

你从哪里获取HTML页面?如果你从servlet请求中获取它,你可以使用getReader()方法并将其传递给clean()。这将使用正确的编码方式。如果你通过上传获取它,将输入流传递给clean()。如果你通过http客户端获取它,你需要检查响应头Content-Type,使用getResponseCharSet()


0
public void arreglarString(String cadena) {
    for (int i = 161; i < 256; i++) {
        char car =  (char) i;
        cadena = cadena.replaceAll(car + "", "&#" + i); 
    }

    return cadena;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接