У меня есть форма, которая не в UTF-8 (на самом деле она в Windows-1251). Люди, конечно, размещают там любых персонажей, которые им нравятся. Браузер услужливо преобразует непрезентабельные в Windows-1251 символы в html-объекты, чтобы я все еще мог их распознать. Например, если пользователь вводит →, я получаю →
. Это отчасти здорово, например, если я просто верну его назад, браузер правильно отобразит → несмотря ни на что.
Проблема в том, что я на самом деле выполняю htmlspecialchars () для текста перед его отображением (это функция PHP для преобразования специальных символов в объекты HTML, например & становится &
). Мои пользователи иногда вводят такие вещи, как —
или ©
, и я хочу отображать их как фактические —
или ©
, а не - и ©.
Я не могу отличить → от →
, потому что я получаю их обоих как →
. И, так как я htmlspecialchars () текст, и , я также получаю →
для → из браузера, я возвращаю →
, который отображается как →
в браузере. Таким образом, пользовательский ввод будет поврежден.
Есть ли способ сказать: «Хорошо, я отправляю эту форму в Windows-1251, но вы , пожалуйста, просто пришлите мне входные данные в UTF-8 и позвольте мне разобраться с этим самостоятельно»?
О, я знаю, что хорошей идеей является переключение всего программного обеспечения на UTF-8, но это слишком много работы, и я был бы рад получить быстрое решение для этого. Если это имеет значение, энктип формы имеет вид «multipart / form-data» (включает загрузчик файлов, поэтому не может использовать любой другой энктип). Я использую Apache и PHP.
Спасибо!