在Java中转换HTML字符编码

在Java中转换HTML字符编码,java,utf-8,Java,Utf 8,我们正在尝试下载网页的源代码,但是由于字符编码,我们无法看到一些特定的字符,例如ü,ö,ş,ç。为了转换字符串(“text”变量)的编码,我们尝试了以下代码: 我们观察到,如果编码是utf-8,我们仍然无法正确地看到页面。我们应该怎么做?如果您知道页面将其内容编码为UTF-8,请告诉字符串构造函数使用UTF-8编码来解释字节 然而,我不确定这是你的问题的程度。在尝试“转换”文本之前,您已经有了“文本”。这意味着,根据某种编码,已经有人试图将页面的字节解释为字符串。如果这是错误的编码,那么您以后所

我们正在尝试下载网页的源代码,但是由于字符编码,我们无法看到一些特定的字符,例如ü,ö,ş,ç。为了转换字符串(“text”变量)的编码,我们尝试了以下代码:


我们观察到,如果编码是utf-8,我们仍然无法正确地看到页面。我们应该怎么做?

如果您知道页面将其内容编码为UTF-8,请告诉字符串构造函数使用UTF-8编码来解释字节

然而,我不确定这是你的问题的程度。在尝试“转换”文本之前,您已经有了“文本”。这意味着,根据某种编码,已经有人试图将页面的字节解释为字符串。如果这是错误的编码,那么您以后所做的任何事情都不一定能够修复它

相反,您需要在上游修复此问题

byte[] bytesOfThePage = ...;
String text = new String(bytesOfThePage, "UTF-8");

问题很可能就在你读、写和/或显示这些字符的地方

如果您正在使用
读取器
读取这些字符,那么您需要使用2参数构造函数构造第一个字符,在其中您可以将正确的编码(因此,
UTF-8
)作为第二个参数传递。例如

reader = new InputStreamReader(url.openStream(), "UTF-8");
writer = new OutputStreamWriter(new FileOutputStream("/page.html"), "UTF-8");
例如,如果要将这些字符写入文件,则需要使用2参数构造函数构造一个,在该构造函数中可以将正确的编码(因此,
UTF-8
)作为第二个参数传递。例如

reader = new InputStreamReader(url.openStream(), "UTF-8");
writer = new OutputStreamWriter(new FileOutputStream("/page.html"), "UTF-8");

例如,如果您正在将其全部简单地写入标准输出(例如,
System.out.println(line)
等等),那么您需要确保标准输出本身使用正确的编码(因此,
UTF-8
)。在Eclipse之类的IDE中,您可以通过窗口>首选项>常规>工作区>编码对其进行配置。

您需要显示实际读取数据的代码,包括输入流和/或您使用的读卡器的声明。此外,还有一些示例输入(或指向您尝试读取的页面的链接)。