4

我知道这应该是基础,但我没有形成:(而且我不明白,在任何地方对人们来说都是显而易见的。我得到一侧用他的集合编码数据,而android可能期待另一个,但我能做什么做翻译?

我的应用程序在 google maps api 上执行获取请求以从 Lat/lng 检索地址。但我未能正确解码结果,因为法语è显示为è

我在 Java 中没有足够的 xp 来理解该做什么。它与 UTF-8 相关联,对吗?

我该怎么办?

            response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
            InputStream stream = entity.getContent();
            int b;
            while ((b = stream.read()) != -1) {
                stringBuilder.append((char) b);
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject = new JSONObject(stringBuilder.toString());
            retList = new ArrayList<Address>();
            if("OK".equalsIgnoreCase(jsonObject.getString("status"))){
                JSONArray results = jsonObject.getJSONArray("results");
                for (int i=0;i<results.length();i++ ) {
                    JSONObject result = results.getJSONObject(i);
                    String indiStr = result.getString("formatted_address");
                    Address addr = new Address(Locale.ITALY);
                    addr.setAddressLine(0, indiStr);
                    Dbg.d(TAG, "adresse :"+addr.toString());
                    retList.add(addr);
                }
            }

感谢帮助 !

4

2 回答 2

10

尝试使用 UTF-8,

而不是使用InputStream尝试类似的东西,

String responseBody = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
于 2013-09-25T15:00:01.403 回答
0

您可以使用 BufferReader
您的代码将是这样的:

InputStream stream = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
        int b;
        while ((b = br.read()) != -1) {
            stringBuilder.append(b);
        }
于 2013-09-25T15:11:15.923 回答