На моем веб-сайте есть форма с простой текстовой областью, чтобы люди могли публиковать комментарии. Проблема в том, что иногда я получаю информацию в uft8, а иногда и в iso. Можно ли это контролировать?
Возможно, я делаю что-то неправильно, но возможно ли, что браузер изменил кодификацию данных, которые он отправил?
благодаря
Если вы хотите быть уверенным в том, какой набор символов вы принимаете, установите его в своей форме
<form method="post" action="/your/url/" accept-charset="UTF-8"> </form>
Здесь вы можете увидеть все допустимые наборы символов : Наборы символов
вы всегда можете заставить UTF-8. Затем вы можете отправлять, получать и хранить данные в обложке объявления UTF-8 на большинстве человеческих языков без необходимости менять набор символов.
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
но … проверьте перед кодировкой, если строка уже utf8, иначе вы дважды закодируете ее
function str_to_utf8 ($string) { if (mb_detect_encoding($string, 'UTF-8', true) === false) { $string = utf8_encode($string); } return $str; }
или использовать
$string = utf8_encode(utf8_decode($string));
поэтому вы не будете дважды кодировать строку
Я решил эту проблему, изменив mbstring.http_input = передать в файл php.ini
Есть ли у вас тесты с несколькими браузерами, если это происходит на всех / некоторых из них или только на IE?
Вы можете кодировать данные $ _POST в UTF-8 с помощью функции utf8_encode PHP.
Что-то вроде:
$_POST['comments'] = utf8_encode( $_POST['comments'] );