Почему эти символы в PHP преобразуются?

#php #html #chars

#php #HTML #символы

Вопрос:

Я получаю некоторую информацию, например, большие объемы текста из базы данных, но при повторном использовании 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
  

и многое другое…

Комментарии:

1. Можете ли вы привести нам больше примеров неверных данных, которые он извлекает из базы данных?

2. Какой набор символов используется в вашей базе данных? Откуда текст вставляется в базу данных? Какая кодировка у вашей HTML-страницы?

3. @alex utf8 текст вставляется пользователем.

4. UTF-8 по всем пунктам? И под вставкой вы подразумеваете через веб-форму? accept-charset Отличается от UTF-8?

Ответ №1:

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

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

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