gpt4 book ai didi

java - inputStream 和 utf 8 有时显示 "?"个字符

转载 作者:行者123 更新时间:2023-12-01 11:48:20 25 4
gpt4 key购买 nike

所以我已经处理这个问题一个多月了,我还通过谷歌检查了几乎所有可能的相关解决方案,但我找不到任何真正解决我的问题的东西。我的问题是我正在尝试从网站下载 html 源代码,但在大多数情况下我得到的是某些文本显示一些“?”其中的字符,很可能是因为该网站是希伯来语的。这是我的代码,

    public static InputStream openHttpGetConnection(String url)
throws Exception {
InputStream inputStream = null;
HttpClient httpClient = new DefaultHttpClient();
HttpResponse httpResponse = httpClient.execute(new HttpGet(url));
inputStream = httpResponse.getEntity().getContent();
return inputStream;

}
public static String downloadSource(String url) {
int BUFFER_SIZE = 1024;

InputStream inputStream = null;
try {
inputStream = openHttpGetConnection(url);
} catch (Exception e) {
// TODO: handle exception
}
int bytesRead;
String str = "";
byte[] inpputBuffer = new byte[BUFFER_SIZE];
try {
while ((bytesRead = inputStream.read(inpputBuffer)) > 0) {
String read = new String(inpputBuffer, 0, bytesRead,"UTF-8");
str +=read;

}
} catch (Exception e) {
// TODO: handle exception
}
return str;

}

谢谢。

最佳答案

要从给定编码的字节流中读取字符,请使用Reader。在你的情况下,它会是这样的:

    InputStreamReader isr = new InputStreamReader(inpputStream, "UTF-8");
char[] inputBuffer = new char[BUFFER_SIZE];

while ((charsRead = isr.read(inputBuffer, 0, BUFFER_SIZE)) > 0) {
String read = new String(inputBuffer, 0, charsRead);
str += read;
}

您可以看到字节将直接作为字符读入——读者的问题是知道是否需要读取一个或两个字节,例如,在缓冲区中创建字符。这基本上是您的方法,但是在读入字节时进行解码,而不是在读入之后进行解码。

关于java - inputStream 和 utf 8 有时显示 "?"个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969941/

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