#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
этого делать при выходе данных из базы данных, если они изначально были экранированы должным образом.