BufferedReader在阿拉伯语中不起作用(编码问题)

时间:2011-09-13 18:21:16

标签: android http

我想在TextView中显示阿拉伯语文本。

当我以静态形式调用它时(从R.string.arabic_text调用文本),这是有用的 我用了一些方法。 但是,当我想从InputStreamReader获取文本时,它会失败。

HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(Url);
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader( 
                is, "iso-8859-1"), 8);

        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = ArabicUtilities.reshape(reader.readLine())) != null) {
            sb.append(line + "\n");
        } 

        is.close();
        result = sb.toString();

Ulr file

pitures

模拟器图片上的文本输出由AlertDialog Utils.AlertTestDeveloppementMsg(result);获取,并且在Toast

上相同

我从文件中完整地提取字段名称。

我在new InputStreamReader( is, "iso-8859-1")尝试了很多字符集 US-ASCII,ISO-8859-1,UTF-8,UTF-16BE,UTF-16LE,UTF-16,Cp1256 ..

1 个答案:

答案 0 :(得分:0)

Http回复有一个Content-type标题,如果文本内容也包含编码。您假设答复是以iso-8859-1编码的。

因此,您应该手动检查回复中使用的编码,或者最好使用EntityUtils.toString()自动检查编码并进行相应转换:

result = EntityUtils.toString(entity);