2

这是使用 php 对 Android 提出的后续问题:将 utf-8 字符串保存到 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 格式,以便正确保存?

4

2 回答 2

4

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

于 2012-10-09T13:09:40.587 回答
-1

这是解决方案:

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

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

于 2014-10-21T10:49:13.157 回答