【问题标题】:PHP Serialize Adding Control Characters to Object Property Names?PHP序列化将控制字符添加到对象属性名称?
【发布时间】:2016-12-28 18:48:47
【问题描述】:
我有一个 PHP 对象,我将其序列化并存储在 mySQL longText 字段中。 mySQL 数据库以 UTF-8 编码,这个 longText 字段也是如此。当我使用 mySQL 客户端复制 longText 字段的内容并将它们粘贴到文本编辑器中时,我发现控制字符已插入到属于该对象的属性名称中。这是一个屏幕截图,控制字符显示为红色:
php序列化这样正常吗?
【问题讨论】:
标签:
php
serialization
utf-8
【解决方案1】:
假设您的示例中的 ¿ 代表一个空字节,那么是的,根据手册,这是正常的:
注意: 对象的私有成员在成员前面加上类名
姓名;受保护的成员在成员名称前有一个“*”。这些
前置值在两边都有空字节。 ~PHP Manual: Serialize
...当您移动序列化对象时需要注意这一点。这些空字节的丢失会使您的对象无法序列化(或者您可能会获得名称奇数的所有公共属性)。