PHP json_encode失去了我的UTF-8逃脱?

时间:2010-11-12 18:51:54

标签: php utf-8 json

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

$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"]

1 个答案:

答案 0 :(得分:2)

您没有逃避数据库输入。永远逃避!

这是一种方式

$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));