gpt4 book ai didi

java - Android - 在设备上显示 UTF-8(俄语)

转载 作者:行者123 更新时间:2023-12-01 06:29:04 27 4
gpt4 key购买 nike

我正在我的 Android 设备(Motorola Defy,2.1)上调试应用程序,该应用程序从网络获取俄语 HTML 页面,但无法显示它。它显示为 link text 。HTML 页面采用 UTF-8(100% 确定)。源代码:

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://m.rasp.yandex.ru/direction?direction=" + direction);
httpget.setHeader("charset", "utf-8");
ResponseHandler<String> responseHandler = new BasicResponseHandler();

String html = httpclient.execute(httpget, responseHandler);

正常显示俄语文本需要什么?抱歉,我的英语知识不好。

最佳答案

httpget.setHeader("charset", "utf-8"); 没有任何意义。

编码由BasicResponseHandler决定。如果 Content-Type header 中未指定响应编码(如您的情况),BasicResponseHandler 假定它是 ISO-8859-1,并且无法配置。

因此,您需要实现自己的 ResponseHandler ,它会回退到另一种默认编码,如下所示:

ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
public String handleResponse(final HttpResponse response)
throws HttpResponseException, IOException {
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() >= 300) {
throw new HttpResponseException(statusLine.getStatusCode(),
statusLine.getReasonPhrase());
}

HttpEntity entity = response.getEntity();
return entity == null ? null : EntityUtils.toString(entity, "UTF-8");
}
}

关于java - Android - 在设备上显示 UTF-8(俄语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770388/

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