[英]Android - displaying UTF-8 (russian) on device
我正在android設備(Motorola Defy,2.1)上調試應用程序,該應用程序從網絡獲取俄語HTML頁面,但無法顯示它。 它顯示為鏈接文本 。 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
標頭中指定響應編碼(如您的情況), 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");
}
}
我想您應該將String html
從CP-1251或類似的東西解碼為UTF-8( html.setHeader()
-migth被忽略)。
我的建議是復制返回的文本(比如說從LogCat中獲取),然后將其放入ArtLebedev的解碼器中 。 因此,您將了解從Yandex返回的HTML原始編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.