PHP应用程序/ x-www-form-urlencoded错误地解码特殊字符

时间:2014-04-30 17:31:20

标签: php post utf-8

远程短信服务(我无法影响)将文本消息发送到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,会导致麻烦。

如果有人知道如何克服这一点,我会很感激你的答案。感谢名单。

1 个答案:

答案 0 :(得分:0)

针对这个特定问题,我现在使用iconv找到了解决方案。

$decoded = iconv( 'ISO-8859-1', 'UTF-8', urldecode( $encoded ) );

我认为在PHP> = 5.4中用于urlencode / urldecode的标准字符集现在是UTF-8,虽然我没有在这些函数的更改日志中找到任何内容。