【发布时间】:2014-11-25 18:53:54
【问题描述】:
我正在尝试序列化一个 php 对象然后反序列化它。
当我序列化,然后将获得的字符串放入文件中,然后读取文件并反序列化,一切正常。
当我序列化,然后将获得的字符串存储在数据库字段中,然后读回并尝试反序列化时,这是行不通的。 我注意到我从数据库中读取的字符串包含一些特殊字符(如 "e;)。我试图通过使用 htmlspecialchars_decode 来摆脱这些,但反序列化仍然不起作用(消息:unserialize(): Error at offset 1774 of 24239 bytes)。当我尝试查看这些字符时,我没有看到任何特别之处。
有什么帮助吗?
【问题讨论】:
-
你在数据库上使用什么字符编码?
-
将其存储在 BLOB / BINARY 列中,而不是 TEXT 或 (VAR)CHAR 中。例如,某些属性的序列化包含 NULL 字节。
-
@Wrikken 是正确的。 serialize() 的文档甚至在 Return Value 部分提到了这一点。
-
@Barmar:啊,检查,感谢您的链接,我将其升级为完整答案。
-
非常感谢。这真的很有帮助
标签: php