PHP 序列化将控制字符添加到对象属性名称?

标签 php serialization utf-8

我有一个 PHP 对象,正在将其序列化并存储在 mySQL longText 字段中。 mySQL 数据库以 UTF-8 编码,此 longText 字段也是如此。当我使用 mySQL 客户端复制 longText 字段的内容并将其粘贴到文本编辑器中时,我发现控制字符已插入属于该对象的属性名称中。这是一个屏幕截图,其中控制字符显示为红色:

enter image description here

这对于 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/

相关文章:

php - 需要找到具有特定键的数组的数组

php - 如何在mysql中设置money的数据类型

java - Jackson: Map<String, Object> 序列化和反序列化

c# - 具有字典属性的 protobuf-net 类

c# - JSON反序列化嵌套方括号

powershell - 在 PowerShell 版本 2 中将字符串转换为字节数组

html - 使用 HTML/UTF-8 字符作为光标

php - 使用 codeigniter 设置 cron 作业

ruby-on-rails - 错误 : Incompatible character encodings: UTF-8 and ASCII-8BIT

php - 在图像上找到最喜欢的区域