我今天几乎整天都在为这个问题苦苦挣扎:Volley的编码问题?
我使用Volley在Android上发送一个POST请求,参数为字符串。这个字符串在我的应用程序中发送时似乎很好,但是当它到达PHP服务器时,编码看起来不同(字符类似于%7D等,用于大括号)。我不确定发生了什么问题。由于这个json_decode在PHP中失败,因为它得到一个语法错误。
我已经在客户端和后端级尝试了几件事情。在客户端上我尝试了以下方法,但没有任何效果。
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json; charset=utf-8");
//params.put("Content-Type", "application/json");
return params;
}
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
在服务器端(PHP)我曾尝试多种方案,以将其更改为UTF-8等,但没有什么工作。
这里$ data1有%7D等,$ data2变为空,因为json_decode失败。
$ data1 = file_get_contents('php:// input');
$ data2 = json_decode($ data1);
有人可以帮忙吗?