【发布时间】: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