我使用以下方法将数据从Android应用程序发送到php脚本:
JSONObject jsonObject= new JSONObject();
try {
jsonObject.put("name", "name ąęś");
jsonObject.put("address", "address żżóóó");
jsonObject.put("title", "title ćććżżżóóó");
} catch (JSONException e) {
e.printStackTrace();
}zamiast
JSONParser jsonParser = new JSONParser();
String url = "http://www.serwer.com/script.php";
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("post", jsonObject.toString()));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url, "POST", params);
在php脚本站点中,我收到如下数据:
if(isset($_POST['post']))
{
$post_utf8 = htmlentities($_POST['post'],ENT_QUOTES, "UTF-8");
$postX = htmlspecialchars_decode($post_utf8);
$post_x = json_decode($postX, true);
echo $_POST['post']; //--> problem with utf8 , "?" instead polish characters
echo $post_x['name']; //--> problem with utf8 , "?" instead polish characters
echo "ąęź"; // --> everything OK, I can see polish characters
}
我总能看到“?”而不是波兰人物。 使用echo“ąźć”我可以看到波兰人物。 对此的改进是POST方法有问题。 我已经检查了很多东西,但不幸的是我到目前为止还没有找到解决方案。
答案 0 :(得分:0)
当使用UTF-8向PHP Server应用程序执行AJAX请求时,您必须确保1)前端支持UTF8(提交表单时,例如HTML编码必须设置为UTF8),2)Webserver配置为使用UTF-8(Apache:AddDefaultCharset utf-8),3)PHP配置为使用UTF8。
答案 1 :(得分:0)
Java Strings使用Unicode,JSON Strings是UTF-8编码的。这就是为什么我们首先需要将Unicode String更改为UTF8字符串,如下所示:
JSONObject jsonObject= new JSONObject();
try {
jsonObject.put("name", "name ąęś");
jsonObject.put("address", "address żżóóó");
jsonObject.put("title", "title ćććżżżóóó");
} catch (JSONException e) {
e.printStackTrace();
}zamiast
JSONParser jsonParser = new JSONParser();
String url = "http://www.serwer.com/script.php";
String utf8String = "";
try {
utf8String = new String(jsonObject.toString().getBytes("UTF-8"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("post", utf8String));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url, "POST", params);