You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android通过JSON向PHP传递EditText字符串时的编码问题排查

解决Android EditText文本JSON发送到PHP的编码异常问题

我之前也踩过类似的编码坑,结合你的代码场景,给你几个精准的排查和解决方向:

1. 确保Android端JSON数据的UTF-8编码输出

你获取EditText文本的代码没问题,但JSON数据转字节流时必须明确指定UTF-8,避免系统默认编码干扰。如果是手动拼接JSON字符串,要这样处理:

String s = editText.getText().toString();
// 拼接JSON(如果用Gson/Jackson等库序列化更稳妥,能自动处理特殊字符转义)
String jsonBody = "{\"content\":\"" + s + "\"}";
// 关键:转成UTF-8编码的字节数组
byte[] postData = jsonBody.getBytes(StandardCharsets.UTF_8);

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);

// 直接写入字节数组,不要用Writer(避免默认编码干扰)
OutputStream os = conn.getOutputStream();
os.write(postData);
os.flush();
os.close();

如果用Gson这类JSON库序列化,默认就是UTF-8,会更安全:

Gson gson = new Gson();
Map<String, String> data = new HashMap<>();
data.put("content", s);
byte[] postData = gson.toJson(data).getBytes(StandardCharsets.UTF_8);

2. PHP端正确读取JSON数据并设置编码

很多人在这里踩坑:当请求头是application/json时,PHP不会自动把数据解析到$_POST数组里,必须读取原始输入流;同时要确保PHP脚本的输出和处理都是UTF-8:

// 先设置响应编码为UTF-8
header('Content-Type: application/json; charset=utf-8');

// 读取原始JSON数据(关键!别用$_POST)
$rawJson = file_get_contents('php://input');
// 解析JSON,第二个参数true转成关联数组
$data = json_decode($rawJson, true);

// 检查解析是否成功
if (json_last_error() !== JSON_ERROR_NONE) {
    echo json_encode(['error' => 'JSON解析失败:' . json_last_error_msg()]);
    exit;
}

// 后续处理(比如存入数据库)也要确保数据库连接是UTF-8
// 比如MySQL:mysqli_set_charset($conn, 'utf8mb4');

3. 额外排查点

  • 检查EditText的输入:可以在Android端用Log.d("TAG", s)打印文本,或者转成十六进制字节看是否符合UTF-8编码,排除输入本身的问题;
  • 避免多余的编码设置:比如不要在HttpURLConnection里重复设置Charset请求头,Content-Type里的charset=UTF-8已经足够;
  • 特殊字符处理:如果文本包含 emoji 或罕见字符,要确保PHP和数据库用utf8mb4编码(比utf8支持更多字符)。

内容的提问来源于stack exchange,提问作者user2697355

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:29:53