我们正在尝试下载网页来源,但是由于字符编码,我们无法看到一些特定的字符 - 如ü,ö,ş,ç-propoerly。我们尝试使用以下代码来转换字符串的编码(“text”变量):
byte[] xyz = text.getBytes();
text = new String(xyz,"windows-1254");
我们观察到如果编码是utf-8,我们仍然无法正确查看页面。我们该怎么办?
答案 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 > 首选项> 常规> 工作区> 编码。