远程短信服务(我无法影响)将文本消息发送到PHP控制器(如果重要的话,是Symfony2应用程序),如Content-Type:application / x-www-form-urlencoded
PHP无法正确解码特殊字符。
tcpdump显示(缩写 - 仅显示有问题的数据)
User-Agent: smsd (libwww-perl/5.805)
Content-Type: application/x-www-form-urlencoded
Content-Length: 123
data=ae+%E4+ue+%FC+oe+%F6+sz+%DF
原始数据是
ae ä ue ü oe ö sz ß
并且PHP $ _POST成立(序列化)
;s:4:"data";s:19:"ae ###e ###### sz ##;
我想,这是缺少的charset = UTF-8,会导致麻烦。
如果有人知道如何克服这一点,我会很感激你的答案。感谢名单。
答案 0 :(得分:0)
针对这个特定问题,我现在使用iconv找到了解决方案。
$decoded = iconv( 'ISO-8859-1', 'UTF-8', urldecode( $encoded ) );
我认为在PHP> = 5.4中用于urlencode / urldecode的标准字符集现在是UTF-8,虽然我没有在这些函数的更改日志中找到任何内容。