gpt4 book ai didi

PHP:使用 UTF-8 的 json_encode 和 json_decode

转载 作者:搜寻专家 更新时间:2023-10-31 20:48:53 26 4
gpt4 key购买 nike

我有以下数组:

Array
(
[1] => Array
(
[time] => 07:30
[event] => Celebrity Organ Recital – Sophie-Véronique Cauchefer-Choplin
)
)

(原始事件字符串是:“Celebrity Organ Recital – Sophie-Véronique Cauchefer-Choplin”,我使用了带有 ENT_QUOTES 的 htmlentities)

当我使用 json_encode 时,事件字符串返回为 NULL,并且在 MySQL 中保存为空字符串。

如果我不使用htmlentities。我会在我的数据库中找到这个:“Celebrity Organ Recital u2013 Sophie-Vu00e9ronique Cauchefer-Choplin”。我用了很多方法还是不能把这个字符串变回原来的样子。

我真的需要一些帮助,我希望你能给我一个解决方案,在 json 中编码一个像上面的 UTF-8 字符串,然后将它保存到 MySQL,然后解码回原来的。我搜索了一段时间,但仍然找不到解决方案。

非常感谢!

最佳答案

在我看来,您并不关心 sql 查询中的清理值 http://php.net/manual/en/function.mysql-real-escape-string.php

简单的例子:我们有结构表:

CREATE TABLE `test` (
`text` VARCHAR(1024) NULL DEFAULT '0'
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB

和PHP脚本

   header("Content-type:text/html;charset=utf8");
$ar = array
(
1 => Array
(
'time' => '07:30',
'event' => 'Celebrity Organ Recital – Sophie-Véronique Cauchefer-Choplin'
)
);

$mysqli = new mysqli('localhost','root', '', 'test');

$mysqli -> query("INSERT INTO `test` (`text`) VALUES ('" . json_encode($ar) . "')"); // we not escape characters like \, ", '

// now we use mysqli::real_escape_string
$mysqli -> query("INSERT INTO `test` (`text`) VALUES ('" . $mysqli -> real_escape_string(json_encode($ar)) . "')"); // here we escape characters

$mysqli_result = $mysqli -> query("SELECT * FROM `test");
while($result = $mysqli_result -> fetch_assoc()){
var_dump(json_decode($result["text"],true));
}

var_dump 的结果是:

array
1 =>
array
'time' => string '07:30' (length=5)
'event' => string 'Celebrity Organ Recital u2013 Sophie-Vu00e9ronique Cauchefer-Choplin' (length=68)

array
1 =>
array
'time' => string '07:30' (length=5)
'event' => string 'Celebrity Organ Recital – Sophie-Véronique Cauchefer-Choplin' (length=63)

第二个var_dump正常

关于PHP:使用 UTF-8 的 json_encode 和 json_decode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10327399/

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