有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓应用中的文本编码问题

我正在使用以下代码从我的网站(在我的Android应用程序中)请求一些内容:

response = httpClient.execute(httpPost, localContext);


// Pull content stream from response
HttpEntity entity = response.getEntity();
InputStream inputStream = entity.getContent();
InputStreamReader rd = new InputStreamReader(inputStream);
//ByteArrayOutputStream content = new ByteArrayOutputStream();
StringBuilder content = new StringBuilder();
int n = 0;
char[] buffer = new char[40000];
while (n >= 0)
{
        n = rd.read(buffer, 0, buffer.length);
        if (n > 0)
        {
            content.append(buffer, 0, n);
        }
}
ret = content.toString();

该站点的内容以Windows-1251编码,但在应用程序中,我得到了一堆不可读的符号,如下所示:

enter image description here

此外,以下代码段似乎也不起作用:

text = new String(matcher.group(1).getBytes("Windows-1251"), "UTF-8");

enter image description here


共 (1) 个答案

  1. # 1 楼答案

    试试这个

        BufferedReader reader = new BufferedReader(new InputStreamReader(in_stream), "UTF-8");
        StringBuilder content = new StringBuilder();
        String line = null;
        try
        {
            while ((line = reader.readLine()) != null) 
            {
                content.append(line + "\n");
            }
    
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        } 
        finally 
        {
            try 
            {
                in_stream.close();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }
        }
        ret = content.toString();