Android与php:将utf-8字符串保存到MySQL

2024-03-09

我知道我问的问题以前已经被问过很多次了,但我觉得我需要澄清我的问题。

我有一个 Android 应用程序,它将 JSON 编码的字符串发送到 PHP 脚本。然后,以下代码将数据保存为完整的 JSON 字符串。 (还有其他函数可以将数据正确保存到多个字段,而不仅仅是作为一个 JSON 字符串)

$json_complete = $_POST['questionnaire'];
$q = json_decode($json_complete, true);

//save complete json string to database
$query_upload = "INSERT INTO questions_json (q_id, json) VALUES('".mysql_real_escape_string($q[qID])."', '$json_complete') ON DUPLICATE KEY UPDATE json = VALUES(json)";
$result = mysql_query($query_upload) or errorReport("Error in query: $query_upload. ".mysql_error());
if (!$result)
    errorReport($result);

问题在于 JSON 字符串中包含的一些文本取自 Android 中以 utf-8 编码的 strings.xml。作为 strings.xml 文件中的示例<item>Can\'t get there</item>在 MySQL 中保存为“Canu0027t get There”。此外,“批发和零售”也保存为“批发 u0026 零售”。

我也有过json_decode()在 php 中由于 JSON 字符串中的非 utf-8 编码字符而对我失败。出现以下错误:UTF-8 字符格式错误,可能编码错误。

我该如何处理所有这些情况?请提供任何帮助。


你还必须mysql_real_escape_string() your $json_complete在你的查询中,否则你会丢失原始的/uXXXX编码。

$json_complete = $_POST['questionnaire'];
$q = json_decode($json_complete, true);

//save complete json string to database
$query_upload = "INSERT INTO questions_json (q_id, json) VALUES('".mysql_real_escape_string($q[qID])."', '".mysql_real_escape_string($json_complete)."') ON DUPLICATE KEY UPDATE json = VALUES(json)";
$result = mysql_query($query_upload) or errorReport("Error in query: $query_upload. ".mysql_error());
if (!$result)
    errorReport($result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android与php:将utf-8字符串保存到MySQL 的相关文章

随机推荐