gpt4 book ai didi

java - 为什么这个 BufferedReader 没有读取指定的 UTF-8 格式?

转载 作者:行者123 更新时间:2023-11-30 09:38:58 26 4
gpt4 key购买 nike

我正在抓取一些网站,其中一些包含非拉丁字符和特殊字符,例如 用于引号而不是 "' 对于撇号而不是 '

这是真正的曲线球......

我已将相关文本打印到控制台。当我在我的 IDE (Netbeans) 中运行它时,一切都编码良好。但是当我在我的电脑上运行它时 “I Need Your Help” 被打印为:ΓÇ£I Need Your HelpΓÇ¥...

在有人说我需要将我的 JAVA_TOOL_OPTIONS 环境变量设置为 -Dfile.encoding=UTF8 之前,让我说我已经这样做了,但这仍然是一个问题.此外,我是否应该将缓冲读取器的编码指定为 "UTF-8" 覆盖它?

这里有一些信息:

  • 我正在使用 JDK 7,目标平台为 1.7
  • 我在 Windows 7 机器上运行我运行它的所有机器并遇到相同的问题(有些没有设置 JAVA_TOOL_OPTIONS,但似乎没有有所作为)。
  • 我认为它使用的默认编码是 Cp1252...

这是我的代码。让我知道您是否需要更多信息。谢谢!

/**
* Using the given url, this method creates and returns the buffered reader for that url
*
* @param urlString
* @return
* @throws MalformedURLException
* @throws IOException
*/
public synchronized static BufferedReader getBufferedReader(String urlString) throws MalformedURLException, IOException {
URL url = new URL(urlString);
InputStream is = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
return br;
}

最佳答案

这里有两种可能性。正如 user1291492 所说,可能是您正确阅读了内容,但您的终端使用的编码与您的 IDE 使用的编码不同。

另一种可能性是源数据不是 UTF-8 格式。如果您正在抓取一个网站,那么您应该注意该网站通过 Content-Type header 告诉您它用于编码的内容,而不是假设它始终是 UTF-8。

关于java - 为什么这个 BufferedReader 没有读取指定的 UTF-8 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946817/

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