Android:使用JSON向EditText发送字符串到PHP - 编码麻烦

时间:2018-04-29 11:19:23

标签: php android encoding utf-8

在使用JSON向PHP脚本发送文本时,我对使用Android EditText编码文本时遇到了麻烦。

首先在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()

1 个答案:

答案 0 :(得分:0)

你可以尝试修剪你的文字

   String s = editText.getText().toString();
         s  = s.trim();

然后编码文本

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