gpt4 book ai didi

java - UTF-8 和 ISO-8859-1 不适用于 Java 中的欧洲字符集解码

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:06 24 4
gpt4 key购买 nike

您好,我有一个 HTML 页面,我正在从中抓取数据。该页面使用UTF-8字符集并包含德语和其他欧洲字母

<meta charset="utf-8">

但是当我尝试在 Java 中将其解码为 ISO-8859-1UTF-8 时,却没有任何效果。我无法获取欧洲字符,而是得到如下值:

Bayern München
Bor. Mönchengladbach
Jérôme Boateng

以下是我的代码片段:

               URL myUrl = new URL("http://www.weltfussball.de/spielplan/bundesliga-"
+ season + "-spieltag/" + gameDay + "/");

in = new BufferedReader(new InputStreamReader(myUrl.openStream(), "ISO-8859-1"));

while ((line = in.readLine()) != null) {
all += line;
}

我注意到的一件事是,当我打印 String line; 时,它会在 java 控制台上正确打印所有拉丁字符,但是一旦我将其连接到 String all; 字符就会困惑......任何人都可以提出解决方案吗?

最佳答案

首先,尝试查看页面是否真的像它假装的那样使用 UTF-8:

final CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder()
.onMalformedInput(CodingErrorAction.REPORT);

try (
final InputStream in = url.openStream();
final Reader reader = new InputStreamReader(in, decoder);
) {
/* read the contents */
}

如果该程序抛出MalformedInputException,那么您就知道该页面在撒谎。

但是,鉴于您的输出,我怀疑问题是您的显示器无法正确读取 UTF-8。

关于java - UTF-8 和 ISO-8859-1 不适用于 Java 中的欧洲字符集解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28052592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com