我知道应该是基础知识,但我没有形成 :(我不明白它,对于人们来说似乎很明显。我得到那一方用他的set和android编码数据可能期待另一个,但我可以做些什么来翻译?
我的应用在google maps api上执行get请求,以便从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);
}
}
感谢您的帮助!
答案 0 :(得分:10)
尝试使用UTF-8,
而不是使用InputStream
尝试类似的事情,
String responseBody = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
答案 1 :(得分: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);
}