Wie behandeln die Akzent-Zeichen (z.B. é im Wort République), die von den Google-Map-server als Antwort in Android
Möchte ich die Anzeige der Antwort, die aus dem Google-Map-Server. Die Antwort, die ich bekomme, ist der name einer Lage, dass ich immer nach dem senden der breiten-und Längengrad auf der Google-Map-server und die Antwort kommt wie diese "av de la République", aber wenn ich diese Anzeige in der App nach dem Parsen der Antwort, die immer angezeigt als "av de la RÃ(c)publique"....
Das code-snippet unten könnte beim verstehen helfen, mein problem..
public static String getAddress(double lat, double lon){
StringBuilder stringBuilder = new StringBuilder();
String add ="";
try {
HttpPost httppost = new HttpPost("http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lon+"&sensor=false");
HttpClient client = new DefaultHttpClient();
org.apache.http.HttpResponse response;
stringBuilder = new StringBuilder();
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject = new JSONObject(stringBuilder.toString());
} catch (JSONException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
add = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getString("formatted_address");
} catch (Exception e) {
e.printStackTrace();
}
return add;
}
Dies ist meine Umsetzung von dem code
public static String getAddress(double lat, double lon){
StringBuilder stringBuilder = new StringBuilder();
String add ="";
try {
HttpPost httppost = new HttpPost("http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lon+"&sensor=false");
HttpClient client = new DefaultHttpClient();
org.apache.http.HttpResponse response;
stringBuilder = new StringBuilder();
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
char[] buffer = new char[2048];
Reader reader = new InputStreamReader(entity.getContent(), "UTF-8");
while (true) {
int n = reader.read(buffer);
if (n < 0) {
break;
}
stringBuilder.append(buffer, 0, n);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject();
try {
Log.i("===================", stringBuilder.toString());
jsonObject = new JSONObject(stringBuilder.toString());
} catch (JSONException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
try {
add = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getString("formatted_address");
} catch (Exception e) {
e.printStackTrace();
}
return add;
}
überprüfen Sie diese Antwort: stackoverflow.com/a/7368354/180100
InformationsquelleAutor Gulrez | 2012-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Sie Lesen, den text als Byte, sondern als text. Die Beträge
Lesen Sie die Antwort in ISO-8859-1, wenn in der Tat es ist UTF-8.
Versuchen Sie dies:
Hier ist es integriert in Ihren code:
Ich bin mit
UTF-8
Reader
, und das Lesen der input-zu einerStringBuilder
. Ich integrierte ihn in Ihre codeHallo Esailija noch einmal vielen Dank für die Beantwortung meiner post nach dem integrieren von code in von mir, aber leider ist das problem immer noch nicht gelöst... ich habe meine Umsetzung den code, vielleicht hilft es Euch bei der Suche nach dem problem.
InformationsquelleAutor Esailija
Dies ist die Antwort. https://stackoverflow.com/a/5730210
byte ptext[] = myString.getBytes("ISO-8859-1");
String value = new String(ptext, "UTF-8");
Wenn Sie beim Lesen aus einer Datei, die Sie würde auch die Notwendigkeit zu Kodieren, die inputStreamReader mit UTF-8-Codierung.
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
InformationsquelleAutor MAYUR