JAVA:下载的 HTML 文件中的希腊字符未显示,如何解决此问题?

标签 java html character

我正在下载一个 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/

相关文章:

sql - SQL Server TRIM字符

c - 如何使用指针清除字符数组?

java - 如何将 LibGDX 相机与 Box2D 调试渲染器一起使用

java - 无法通过 smpp 帐户发送短信

java - DataNucleus 中的@Convert

html - 使用图像作为提交按钮

javascript - 监听属性变化的事件

java - 如何使用 Mask 从 JFormattedTextField 获取日期

html - CSS定位: how to position a block/paragraph under another

c - 如何使用重复功能创建向上三角形