【问题标题】:PHP json_encode losing my UTF-8 escapes?PHP json_encode 丢失了我的 UTF-8 转义?
【发布时间】:2010-11-12 18:51:53
【问题描述】:

我有一个包含国际字符字符串的数组。
当我将其保存在数据库中时,我松开了反斜杠?为什么?

$descr_arr = array("héééllo","world");
$js_encoded = json_encode($descr_arr);
print $js_encoded; // "[\"h\u00e9\u00e9\u00e9llo\",\"world\"]"

$sql_query = "UPDATE test_table SET description = '$js_encoded' WHERE id = 0";
$sql_res = mysql_query($sql_query);

// in the description field in the database I find:
// ["hu00e9u00e9u00e9llo","world"]

【问题讨论】:

    标签: php utf-8 json


    【解决方案1】:

    您没有转义您的数据库输入。永远逃跑!

    这是一种方法

    $sql_query = "UPDATE test_table SET description = '".
       mysql_real_escape_string($js_encoded).
       "' WHERE id = 0";
    

    更好的是,使用像 PDO 或 ADODb 这样的数据库包装器,它会为您处理转义。它看起来像这样:

    $db->Execute("UPDATE test_table SET description =? where id=?",
         array($js_encoded, $id));
    

    【讨论】:

    • 感谢 Paul,也感谢您对 PDO 和 ADODb 的建议,现在阅读它们,干杯
    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2016-04-13
    相关资源
    最近更新 更多