gpt4 book ai didi

php json_encode utf8 字符问题(mysql)

转载 作者:IT老高 更新时间:2023-10-29 00:03:21 27 4
gpt4 key购买 nike

我正在使用 jQuery json_encode 以表单的数据形式写入数据库.

但是,数据库中的数据会损坏。

$db->query("SET NAMES utf8");

$kelime = array("Merhaba","Dünya");
$bilgi = json_encode($kelime);

$incelemeEkle = "
INSERT INTO incelemeRapor SET
bigData = '".$bilgi."'
";
$db->query($incelemeEkle);

数据库表架构;

CREATE TABLE `incelemeRapor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bigData` text COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

MySQL 插入的示例数据;

["Merhaba","Du00fcnya"]

最佳答案

在将数据放入 SQL 查询之前始终对数据进行转义:

$incelemeEkle = "
INSERT INTO incelemeRapor SET
bigData = '".mysql_real_escape_string($bilgi)."'
";

(添加了 mysql_real_escape_string() 调用)

json_encode()使用 \u<code-point> 编码非 ASCII 字符符号;所以json_encode(array("Merhaba","Dünya"));返回 ["Merhaba","D\u00fcnya"] .

然后将此字符串嵌入到 SQL 查询中:

INSERT INTO incelemeRapor SET
bigData = '["Merhaba","D\u00fcnya"]'

转义序列\u没有特殊含义, 所以 MySQL 只是删除了 \ ;这导致 ["Merhaba","Du00fcnya"]存储在数据库中。

因此,如果您对字符串进行转义,查询将变为:

$incelemeEkle = "
INSERT INTO incelemeRapor SET
bigData = '["Merhaba","D\\u00fcnya"]'
";

["Merhaba","D\u00fcnya"]存储在数据库中。

关于php json_encode utf8 字符问题(mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4782319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com