Java Bing地图REST服务返回不正确的法语字符。有没有办法要求他们对自己的反应进行编码或解码?
在我编写的Android应用程序中,有一部分允许用户输入旅行的开始和结束位置,并返回路线。我正在为此使用Bing地图REST服务。我希望返回的方向是法语 请求示例:。这最好在Chrome浏览器上看到,Safari和Firefox会处理好这一点。你可以看到方向图上有很多奇怪的字符,而这些字符本不应该出现。我已尝试在设备上解码,方法是:Java Bing地图REST服务返回不正确的法语字符。有没有办法要求他们对自己的反应进行编码或解码?,java,android,web,bing,decoding,Java,Android,Web,Bing,Decoding,在我编写的Android应用程序中,有一部分允许用户输入旅行的开始和结束位置,并返回路线。我正在为此使用Bing地图REST服务。我希望返回的方向是法语 请求示例:。这最好在Chrome浏览器上看到,Safari和Firefox会处理好这一点。你可以看到方向图上有很多奇怪的字符,而这些字符本不应该出现。我已尝试在设备上解码,方法是: urldecker.decode(obj.optString(“文本”),HTTP.ISO_8859_1) 这不起作用(反应保持不变),我认为这是有道理的,因为它已
urldecker.decode(obj.optString(“文本”),HTTP.ISO_8859_1)
这不起作用(反应保持不变),我认为这是有道理的,因为它已经成为特殊角色。我无法使用Windows-1252进行解码,因为Android似乎不支持这一点
我被送回的一个例子:LÃger Encombrement
。应该是什么:Léger Enombrement
它在iPhone上也能很好地工作,但在Android上不行。关于我如何解决这个问题有什么建议吗
我在connection类中的代码是:
public static JSONObject getJSONResult(final String url) {
try {
final HttpClient client = new DefaultHttpClient();
final HttpGet get = new HttpGet(url);
final HttpResponse responsePost = client.execute(get);
final HttpEntity resEntity = responsePost.getEntity();
boolean DEBUG = true;
if (DEBUG) {
Log.d("", "[JSON-ENV] url: " + url);
}
final String str = EntityUtils.toString(resEntity);
Log.d("connection", "response str: " + str);
if (resEntity != null) {
final JSONObject obj = new JSONObject(str);
Log.d("connection", "JSON RESPONSE IS " + obj);
return obj;
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
有什么我需要添加到我的连接类吗
更新:
我添加了JSON解析代码,格式为“ISO_8859_1”,如本文所示:但我仍然得到相同的结果 这是JSON。您不需要使用URL解码器。错误发生在这之前,可能是在为JSON解析器创建字符串时。JSON总是使用UTF-8(或16,很少使用) 您可以发布读取服务器响应的代码吗 编辑 EntityUtils使用ISO_8859_1作为默认字符集(如果在内容中找不到)。简单地改变
final String str = EntityUtils.toString(resEntity);
到
final String str = EntityUtils.toString(resEntity, HTTP.UTF_8);