Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:将带有JSON的EditText中的字符串发送到PHP-编码问题_Php_Android_Encoding_Utf 8 - Fatal编程技术网

Android:将带有JSON的EditText中的字符串发送到PHP-编码问题

Android:将带有JSON的EditText中的字符串发送到PHP-编码问题,php,android,encoding,utf-8,Php,Android,Encoding,Utf 8,我在用JSON将Android EditText的文本发送到PHP脚本时遇到了编码问题 首先在Android中,我从EditText元素获取文本 String s = editText.getText().toString(); 然后我通过HttpURLConnection将其发布到PHP脚本 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); con

我在用JSON将Android EditText的文本发送到PHP脚本时遇到了编码问题

首先在Android中,我从EditText元素获取文本

String s = editText.getText().toString();
然后我通过HttpURLConnection将其发布到PHP脚本

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);
conn.setDoInput(true);

JSONObject jsonParam = new JSONObject().put("mystring", s);

DataOutputStream os = new DataOutputStream(conn.getOutputStream());
os.writeBytes(jsonParam.toString());
os.flush();
os.close();
然后我在PHP脚本中解析JSON:

$data = json_decode(utf8_decode(file_get_contents('php://input')), true);
一切正常,但当我尝试发送一些带有变音符号的文本时,似乎什么都没有发送,var_dump($data)为空。格式化是否有问题,或者可能是什么问题

谢谢你的帮助

编辑


Elsunhoty的答案很有效,但我必须在PHP中使用urldecode()

您可以尝试先修剪文本

   String s = editText.getText().toString();
         s  = s.trim();
然后对文本进行编码

  String encodeText= "";
                try {
                     encodeText= URLEncoder.encode(s,"utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

不幸的是,这仍然不起作用。它不再为空,但变音符号不正确。