Почему эти символы в PHP конвертируются?

Я получаю некоторую информацию, такую ​​​​как большие объемы текста из базы данных, но при отображении с помощью PHP символы меняются. Как мне заставить его отображать нормальную вещь? Спасибо.

//makes database connection and queries the db
$row = mysqli_fetch_array($result);
echo $row['text'];



  � inside has a question mark
\ before every apostrophe
and it\\\'s

и более...


person steve    schedule 15.04.2011    source источник
comment
Можете ли вы привести больше примеров неправильных данных, которые он извлекает из базы данных?   -  person Wes    schedule 15.04.2011
comment
Какой набор символов у вашей базы данных? Откуда текст вставляется в базу данных? Какая кодировка у вашей HTML-страницы?   -  person alex    schedule 15.04.2011
comment
@alex utf8 текст вставляется пользователем.   -  person steve    schedule 15.04.2011
comment
UTF-8 по всем пунктам? А под вставкой ты имеешь в виду через веб-форму? Отличается ли accept-charset от UTF-8?   -  person alex    schedule 15.04.2011


Ответы (1)


Во-первых, чрезмерные косые черты. Обычно это вызвано чрезмерным экранированием, которое может быть связано с magic_quotes. Рекомендуется отключить его и использовать mysql_real_escape_string для данных, поступающих в базу данных. Прежде чем отключить его, убедитесь, что данные экранированы должным образом, так как это может привести к внедрению sql-инъекций на ваш сайт.

Что касается странного персонажа. Наборы символов вашей базы данных и веб-сайта должны совпадать. Убедитесь, что для вашего веб-сайта установлена ​​кодировка utf-8 либо с помощью метатега, либо с помощью параметра header.

Это тяжелое изменение для magic_quotes, но как только оно будет сделано, вам не нужно беспокоиться об использовании stripslashes на вашем данные снова. Поскольку вам не нужно stripslashes на данные, выходящие из базы данных, если они были правильно экранированы в первую очередь.

person Jimithus    schedule 15.04.2011