这是使用 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 格式,以便正确保存?