Часто при выводе строк из базы данных на веб-страницу специальные символы отображаются в виде каких-то других странных символов (в моем примере em-dash превращается в â € "). Как я могу это предотвратить?
Я использую PHP + MySQL
, и я не использую никаких frameworks
.
Я предполагаю, что это вызвано несогласованной кодировкой / кодировкой между HTML и базой данных, хотя я не могу понять, как это исправить.
в вашей странице просмотра html
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
и если вы вставляете какой-то другой символ языка вместо английского, чем сделайте этот столбец utf8-general-ci
В верхней части страницы в теге заголовка используйте приведенный ниже код:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Вы можете попробовать это. Используйте следующую встроенную функцию php, чтобы избежать этих символов в заданной строке. В вашем случае данные из базы данных.
html_entity_decode($given_string,ENT_QUOTES, "ISO-8859-1");
Mojibake – Это классический случай
SET NAMES latin1
(или set_charset('latin1')
или …), вероятно, по умолчанию. (Это должно было быть utf8
.) CHARACTER SET latin1
. (Или, возможно, это было унаследовано из таблицы / базы данных.) (Это должно было быть utf8
.)