中文 json_encode 插入到mysql 问题
我先抛出问题
一个成员信息列表,用户名显示是这样的 u8fd9u662fu4e2du6587
可以看得出来,本身应该是这样的 \u8fd9\u662f\u4e2d\u6587
==》 这是中文
我去查询,发现数据库中本身存的就是如此, 类似如下。
问题原因
$name = ["这是中文", "你好啊", "好尼玛"];
$name = json_encode($name);
$args = "('{$name}')";
$sql = "INSERT INTO `usertest` (`jsonstr`) VALUES {$args}";
$rs = $obj->query($sql);
......
执行的sql是这样的
INSERT INTO `usertest` (`jsonstr`) VALUES ('["\u8fd9\u662f\u4e2d\u6587","\u4f60\u597d\u554a","\u597d\u5c3c\u739b"]')
这里插入mysql时,\
被当成了转义符给去掉了。
解决办法
$name = json_encode($name, JSON_UNESCAPED_UNICODE);
本作品采用《CC 协议》,转载必须注明作者和本文链接
再转义一次就好了。addslashes或者 pdo->quote