Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-如何从数据库序列化具有特殊字符的数据?_Php_Database_Serialization - Fatal编程技术网

PHP-如何从数据库序列化具有特殊字符的数据?

PHP-如何从数据库序列化具有特殊字符的数据?,php,database,serialization,Php,Database,Serialization,我有一个带有特殊字符的字符串,如: $text = "NÃO"; 当我使用serialize($text)时,返回 但当我使用从数据库中获取的字符串时,如: $query = SELECT special_text FROM ... (...) $text = $row->"special_text" serialize($text); 返回 a:1:{i:0;s:3:"NÃO";} ,是什么让我的剧本崩溃了 当我从数据库序列化数据时,我必须做什么? Thx,对不起,我的英语是如果您

我有一个带有特殊字符的字符串,如:

$text = "NÃO";
当我使用serialize($text)时,返回

但当我使用从数据库中获取的字符串时,如:

$query = SELECT special_text FROM ...
(...)
$text = $row->"special_text"
serialize($text);
返回

a:1:{i:0;s:3:"NÃO";}
,是什么让我的剧本崩溃了

当我从数据库序列化数据时,我必须做什么?
Thx,对不起,我的英语是

如果您不想使用utf-8,请尝试在将序列化字符串保存到db之前对其进行编码,并在检索后进行解码。您可以使用base64编码,只要在数据库中使用任何8位编码即可。此方法将数据大小增加了4/3。或者您可以在数据库中使用二进制(BLOB)字段,并用gzip或类似的东西对数据进行编码。对于大量文本非常有用,但会增加CPU负载

不要序列化它。将数据库和数据库连接的字符编码设置为utf-8,忘记编码问题。问题是我必须序列化数据,我正在从未序列化的数据库导入需要序列化数据才能工作的数据库。所以我需要从旧数据库中获取一个数组,序列化,然后插入到新数据库中,明白吗?不幸的是,我无法更改数据库的结构。我无法更改数据未序列化的方式,因此我无法解码数据。我不明白为什么字符串“NÃO”返回4个位置,而数据库中的同一字符串只返回3个位置。
a:1:{i:0;s:3:"NÃO";}