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

UTF-8和ISO-8859-1不适用于在Java中解码欧洲字符集,java,string,utf-8,character-encoding,iso-8859-1,Java,String,Utf 8,Character Encoding,Iso 8859 1,嗨,我有一个HTML页面,我正在从中删除数据。该页面使用UTF-8字符集,包含德语和其他欧洲字母 <meta charset="utf-8"> 以下是我的代码: URL myUrl = new URL("http://www.weltfussball.de/spielplan/bundesliga-" + season + "-spieltag/" + gameDay + "/");

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

<meta charset="utf-8">
以下是我的代码:

               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;
                }

我注意到的一件事是当我打印字符串行时;它在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 */
}
如果该程序抛出一个格式错误的InputException,那么您就知道该页面在撒谎

然而,考虑到您的输出,我怀疑问题在于您的显示器没有正确读取UTF-8。

这始终有效

InputStream is=getClass.getResourceAsStreammyUrl; 字节[]b=新字节[可用]; int l=is.readb; 字符串体=新字符串B、0、l、UTF-8;//无论您想要什么字符集,请确保ISO-8859-1是唯一正在读取的字符集。否则就不行了。 今天我也遇到了同样的问题,我花了30分钟阅读了这篇文章,然后我解决了我的问题,现在我知道了解码的内容,为什么人们使用它,为什么它是好的,以及他自己的局限性

为了解决我的问题,我只在头模板文件中替换了此标记:

meta http equiv=内容类型content=文本/html;字符集=UTF-8

用于:

meta http equiv=内容类型content=文本/html;字符集=ISO-8859-1

重新加载浏览器,现在可以正确打印带有古怪字符的我的欧洲名字:


对不起,英语不好

如果页面使用UTF-8,为什么您要尝试使用ISO-8859-1阅读它?另外,您确定不是您的控制台无法正确显示UTF-8吗?我也尝试过使用UTF-8,但效果不好。我认为这些单词是拉丁语,所以ISO拉丁语应该可以解决问题,但事实并非如此。我确信。我没有在我的控制台中查看它。我调试代码并查看对象的状态,在那里我可以看到字符串的字母不正确。UTF-8和ISO-8859-1都是字符编码;对于这样的角色,它们是不相容的。你不能用一个来代替另一个。所以问题在于你用什么来显示内容。这本记事本是偶然的吗?我还没有在任何地方展示它。我只是在调试时在eclipse中看到它。我将鼠标悬停在我的物体上,可以看到它的状态。啊,停下!我在代码片段中犯了一个错误;它应该是报告而不是替换的。对不起:/你能再试一次吗?我在你编辑你的评论后再试了一次,仍然没有例外。好吧,如果你仍然有显示问题,那么这确实是Eclipse的问题。您能否尝试将.toString转储到一个文件中,并使用支持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 */
}