Преобразование специальных символов с помощью htmlspecialchars и htmlentities

Я запутался с введением специальных символов в мою базу данных сейчас …

Например, я хочу принимать символы типа ö , ù и т. Д., И я хочу отображать их так, как они есть на 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 который я установил в этом столбце имен?

Благодарю.

Related of "Преобразование специальных символов с помощью htmlspecialchars и htmlentities"

Это происходит потому, что вы пытаетесь преобразовать символы utf8 с htmlentites. К сожалению, функция работает только на символах ascii. Самое простое решение состоит в том, чтобы просто хранить ваши строки в вашей таблице базы данных utf8 и выводить их только с помощью htmlspecialchars вместо htmlentities. Просто убедитесь, что ваша кодировка страницы установлена ​​на utf8.

Также вы можете просто сделать:

 $text = htmlspecialchars( $text ); $text = mysql_escape_string( $text );