我有一个 PHP 对象,正在将其序列化并存储在 mySQL longText 字段中。 mySQL 数据库以 UTF-8 编码,此 longText 字段也是如此。当我使用 mySQL 客户端复制 longText 字段的内容并将其粘贴到文本编辑器中时,我发现控制字符已插入属于该对象的属性名称中。这是一个屏幕截图,其中控制字符显示为红色:
这对于 php 序列化来说正常吗?
最佳答案
假设示例中的 ¿
代表空字节,那么是的,根据手册,这是正常的:
Note: Object's private members have the class name prepended to the member name; protected members have a '*' prepended to the member name. These prepended values have null bytes on either side. ~ PHP Manual: Serialize
...移动序列化对象时需要注意这一点。丢失这些空字节将使您的对象不可序列化(或者您可能会获得奇怪名称的全公共(public)属性)。
关于PHP 序列化将控制字符添加到对象属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41367999/