在Java中转换HTML字符编码

时间:2010-01-26 17:00:46

标签: java utf-8

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

byte[] xyz = text.getBytes();
text = new String(xyz,"windows-1254"); 

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

2 个答案:

答案 0 :(得分:2)

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

但是我不确定这是你问题的严重程度。在尝试“转换”之前,您已经有了“文本”。根据某些编码,这意味着已经尝试将页面的字节解释为String。如果这是错误的编码,你以后做的任何事情都无法解决它。

相反,你需要修复这个上游。

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

答案 1 :(得分:0)

问题很可能就是那里你正在阅读,写作和/或显示这些角色。

如果您使用Reader读取这些字符,则需要首先使用2参数构造函数构造InputStreamReader,其中您可以传递正确的编码(因此,{{1} })作为第二个参数。 E.g。

UTF-8

如果您要将这些字符写入文件,则需要使用2参数构造函数构造OutputStreamWriter,其中您可以传递正确的编码(因此,reader = new InputStreamReader(url.openStream(), "UTF-8"); )as第二个论点。 E.g。

UTF-8

如果您要将所有普通字体写入标准输出(例如writer = new OutputStreamWriter(new FileOutputStream("/page.html"), "UTF-8"); 等等),那么您需要确保标准输出本身正在使用正确的编码(因此,System.out.println(line)在Eclipse之类的IDE中,您可以通过 Window > 首选项> 常规> 工作区> 编码