【问题标题】:Android: HttpPost JSON string in UTF-8 encoding to PHPAndroid:UTF-8 编码到 PHP 的 HttpPost JSON 字符串
【发布时间】:2012-09-29 18:35:35
【问题描述】:

这是Android with php: Saving utf-8 string to MySQL的后续问题

我正在使用 Android 中的 Gson 库将类实例转换为 JSON 字符串。然后将此 JSON 字符串与 HttpPost 一起上传到 PHP 脚本,以将其保存到我的 MySQL 数据库中。

最初我认为问题出在 php 或 MySQL,但现在看来是我的 HttpPost 代码序列未正确将 JSON 编码为 UTF-8。如果我调试我的代码并在 Chrome 中使用 JSON 字符串进行 POST,它会完美运行。

我的 MySQL 数据库现在被格式化为 UTF-8 (utf8_general_ci)。

这是我的 HttpPost 代码:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

ArrayList<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("questionnaire", json));

httppost.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8"));

HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();

问题可能出在 httppost.setEntity(new UrlEncodedFormEntity(parameters, "UTF-8")); 中,但我不确定如何通知我的 PHP 脚本我正在以 UTF-8 格式发送 JSON。

例如,当 Gson 创建 JSON 字符串时,Android 将“无法到达那里”正确编码为“can/u0027t 到达那里”。将 JSON 上传到 PHP 后,它在 MySQL DB 中保存为“canu0027t get there”,没有“\”。

那么我怎样才能在 Android 中正确地将这个 JSON 字符串标记/标记/识别为 UTF-8 格式,以便正确保存?

【问题讨论】:

  • 请求必须是什么以及您要发送什么。否则请在此处发布,您的问题含糊不清。

标签: php android json utf-8 http-post


【解决方案1】:

这是解决方案:

StringEntity se = new StringEntity(jObjEnvio.toString(), HTTP.UTF_8);

如果这不起作用,请清理并修复项目。

【讨论】:

    【解决方案2】:

    您必须在将 php 代码中的 json 字符串转义(例如 mysql_real_escape_string()),然后才能将其保存到数据库中。您的 Android 代码是正确的。

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      相关资源
      最近更新 更多