Текст UTF-8 искажается, когда форма публикуется как multipart/form-data в PHP
У меня есть скрипт PHP для публикации статей. Он работал отлично, пока мы не добавили поддержку загрузки файлов. Чтобы разрешить загрузку файлов, нам пришлось изменить тип тега на multipart/form-data. Теперь, когда мы пытаемся отправить статью с многобайтовыми символами, они становятся искаженными после того, как вы получите их через $_POST. Если мы удалим enctype формы, то он будет работать нормально.
Мы искали в интернете решение, ориентированное на php, но безуспешно. Существует атрибут accept-charset тега, но он не работает в IE. Существует решение для JSP в UTF-8. Текст искажается, когда форма публикуется как multipart/form-data, но нет решения для PHP. Так что, пожалуйста, помогите!
2 ответа
Если вы используете PHP 5.4.x, установка mbstring.http_input из "auto" в "pass" может решить вашу проблему.
Переустановка apache и перекомпиляция php исправили его для некоторых ppl в linux.
У меня было то же самое на моем локальном хосте, но на производственном сервере этого не происходит. Мой местный WAMP, производство LAMP, все имеет ту же версию.
Так что для меня это работает с этими: CentOs 6.3, PHP 5.4, Apache 2.2.15
Кстати, на моем локальном mb_detect_encoding() показывает "UTF-8", но строка в любом случае беспорядок.