我正在下载一个 HTML 文件,我需要使用 System.out.println()
显示它。
问题是我得到的不是希腊字符而是垃圾。
我使用下面的代码来下载 HTML 文件:
URL url = new URL("here goes the link to the html file");
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
String htmlfile = "";
String temp;
while ((temp = br.readLine()) != null) {
htmlfile+= temp;
}
System.out.println(htmlfile);
这个问题可以解决吗?以下是我得到的结果示例:
<title>Ξ Ολη ΞλΡκΟΟΏΟ ΟΏ δικΟΟΞ±ΞΊΟ ΟΟΟΞΏ</title>
我计算机上的所有区域设置都很好。我可以使用 System.out.println 直接显示希腊单词。 我感觉我需要更改 BufferedReader 中的某些区域设置,但我不确定如何执行此操作,或者这是否是解决此问题的正确方法。
有点题外话,我感觉上面下载HTML文件的方法实在是无效。例如,当我使用 html+=temp
时,每次从 HTML 文件中读取一行时,我是否基本上都会创建一个新的 String
实例?这听起来非常昂贵,如果您可以请建议我其他更有效的方法来完成同样的事情。
最佳答案
String encoding = "UTF-8"; // Or "ISO-8859-7"
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), encoding));
ISO-8859-1 是希腊语使用的 8 位编码,UTF-8 是多字节 unicode 编码。
StringBuilder sb = new StringBuilder();
String temp;
while ((temp = br.readLine()) != null) {
sb.append(temp).append("\n");
System.out.println(temp);
}
String html = sb.toString();
readLine 删除行结尾(\r
旧版 MacOS、\n
Unix 或 \r\n
Windows)。
关于JAVA:下载的 HTML 文件中的希腊字符未显示,如何解决此问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9453870/