Я запутался с введением специальных символов в мою базу данных сейчас …
Например, я хочу принимать символы типа ö
, ù
и т. Д., И я хочу отображать их так, как они есть на html, таких как Löic
который является французским именем.
И я думал, что должен преобразовать эти специальные символы в html-объекты, прежде чем вводить их в базу данных, например ö
для ö
.
Если я использую htmlspecialchars()
для их преобразования,
Array ( [name] => Löic ) if(isset($_POST['name'])) $name = preg_replace('/\s\s+/', ' ', trim($_POST['name'])); $name = htmlspecialchars($name, ENT_QUOTES);
Поэтому он должен быть преобразован в этот Löic
но он не преобразован вообще, а не так, как есть,
Löic
Так вот что я получаю, когда проверяю свою базу данных, она хранится как,
Löic
Если я использую htmlentities()
для их преобразования,
$name = htmlentities($name, ENT_QUOTES);
то я получаю это,
Löic
и он отображается как это на моем html,
Löic
Почему это так? Моя голова взорвется! Я не знаю, где проблема. Пожалуйста, помогите … Что мне делать, чтобы все исправить?
Это связано с utf8_general_ci
который я установил в этом столбце имен?
Благодарю.
Это происходит потому, что вы пытаетесь преобразовать символы utf8 с htmlentites. К сожалению, функция работает только на символах ascii. Самое простое решение состоит в том, чтобы просто хранить ваши строки в вашей таблице базы данных utf8 и выводить их только с помощью htmlspecialchars вместо htmlentities. Просто убедитесь, что ваша кодировка страницы установлена на utf8.
Также вы можете просто сделать:
$text = htmlspecialchars( $text ); $text = mysql_escape_string( $text );