php отправить форму utf8? - PullRequest
7 голосов
/ 04 февраля 2011

На моем сайте есть форма с простой текстовой областью, чтобы люди могли оставлять комментарии. Проблема в том, что иногда я получаю информацию в uft8, а иногда в iso. Можно ли это контролировать?

Может быть, я что-то не так делаю, но возможно ли, что браузер изменит кодификацию отправляемых данных?

спасибо

Ответы [ 6 ]

18 голосов
/ 04 февраля 2011

Если вы хотите быть уверены в том, какой набор символов вы принимаете, укажите его в форме

<form method="post" action="/your/url/" accept-charset="UTF-8">
</form>

Здесь вы можете увидеть все допустимые наборы символов: Наборы символов

4 голосов
/ 04 февраля 2011

вы всегда можете форсировать UTF-8.Затем вы можете отправлять, получать и хранить данные в формате UTF-8, охватывающем большинство человеческих языков, без необходимости изменять набор символов.

<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
1 голос
/ 04 сентября 2014

но ... проверить перед кодированием, если строка уже 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)); 

чтобы вы не дважды кодировали строку

0 голосов
/ 09 марта 2016

Я решил эту проблему, изменив mbstring.http_input = pass в моем файле php.ini

0 голосов
/ 12 сентября 2012

Вы можете кодировать данные $ _POST в UTF-8, используя PHP-функцию utf8_encode .

Что-то вроде:

$_POST['comments'] = utf8_encode( $_POST['comments'] );
0 голосов
/ 04 февраля 2011

Тестировали ли вы несколько разных браузеров, если проблема возникает во всех / некоторых из них или только в IE?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...