当表单在PHP中作为multipart/form-data发布时,UTF-8文本是乱码的


UTF-8 text is garbled when form is posted as multipart/form-data in PHP

我有一个PHP脚本来发布文章。在我们添加文件上传支持之前,它一直工作得很好。为了能够上传文件,我们必须将标签的enctype更改为multipart/form-data。现在,每当我们尝试提交带有多字节字符的文章时,在您通过$_POST收到它们后,它们就会变成乱码。如果我们删除表单的enctype,那么它可以正常工作。

我们在网上搜索了所有以php为中心的解决方案,但没有运气。标签有一个接受字符集属性,但它在IE中不起作用。对于UTF-8的JSP,有一个解决方案,当表单作为多部分/表单数据发布时,文本会乱码,但对于PHP没有解决方案。所以,请帮忙!

如果您使用PHP 5.4。X,设置mbstring。Http_input从"auto"到"pass"可以解决你的问题。

重新安装apache并重新编译php修复了linux上的一些ppl。

我在本地主机上有相同的设置,但在生产服务器上没有发生这种情况。我的本地是WAMP,生产的是LAMP,所有东西都有相同的版本。

所以对我来说,它适用于这些:CentOs 6.3, php 5.4, Apache 2.2.15

顺便说一句,在我的本地,mb_detect_encoding()显示'UTF-8',但字符串是混乱的。