背景故事:我一直在尝试在我的 Symfony2 应用程序中实现 DynamoDB 会话句柄。
当会话保存到 DynamoDB 时,我遇到了一个绊脚石。看来来自 PHP 的字符串采用某种奇怪的编码,其中包含不是空格的空白字符,这会阻止字符串正确保存在 DynamoDB 中。当我将它粘贴到 PhpStorm 时,该字符串也不会播放得很好。
这是其中的一个示例:
$illegalString = 's:8:"userData";O:27:"\SomeClass":49:{s:8:"�*�email";s:27:"me@domain.com";s:13:"�*�first_name";s:4:"Greg";';
作为参考,这是来自 PhpStorm 的屏幕截图,显示它不是空格。 此外,如果我尝试在这些字符上移动光标,其他字符开始出现,在我的光标下方的图像中,第 1 行最后一个分号左侧的几个空格,引号不存在字符串,但由于某种原因,当我的光标在它上面时它会出现。
如果您将上面的字符串复制/粘贴到下面的站点中,它会破坏页面:http ://www.asciivalue.com/index.php
三个问题:
- 这个字符串有什么问题?它是什么样的时髦编码?
- 为什么 PHP 以这种方式处理会话字符串?
- 创建会话字符串时如何告诉 PHP 仅使用 UTF-8?
注意:这似乎只在使用最新 Linux AMI 的 AWS ec2 上发生。