Чешский символ '& # 283;' на странице php скрипт
Я не могу правильно показать этот символ на своих веб-страницах. Я использую кодировку UTF-8 для этой страницы, я должен использовать ISO-8859-2? Я получаю эту строку с этим символом из БД и на нем, он сохраняется как ě
, Мой браузер показывает только HTML-тег.
Это единственный символ (на данный момент), который я не могу показать на своей веб-странице. Я взглянул на http://www.czech.cz/ и они используют UTF-8.
кто-нибудь предлагает?
Береги себя! Andrea
2 ответа
Вы видите ě
в браузере или при просмотре исходного кода? Если вы видите это в браузере, то, вероятно, он где-то кодируется дважды - независимо от того, выводится ли он на страницу, он, вероятно, обнаруживает его как не кодированный HTML и пытается защитить вас от какого-либо HTML-внедрения. Вы захотите, чтобы это не делалось. Но у вас есть еще более глубокая проблема. Если ваша страница обслуживается в UTF-8, а ваши данные - в UTF-8, нет никаких оснований превращать ее в сущность HTML. Вы должны проходить через данные UTF-8. Вам не нужно переключаться на другую кодировку символов.
Прежде всего, да, вы действительно должны использовать UTF-8. Но это не значит, что ваши данные уже в кодировке UTF-8.
Во-вторых, похоже, что этот символ уже закодирован в базе данных HTML. Это проблема, потому что кажется, что на любой странице, отображающей этот символ, также пытается HTML-кодировать контент. Вот пример того, о чем я говорю.
Данные от пользователя:ě
Данные HTML кодируются (через htmlentities ()) перед входом в БД: ě
Данные хранятся в БД: ě
Данные, полученные из БД: ě
Данные HTML кодируются перед печатью на странице: ě
Данные, как видно в браузере: ě
Вы это видите? Символ становится двойным, так что на втором этапе кодирования символ амперсанда преобразуется в сам объект.
Это проблема с данными в кодировке HTML перед сохранением их в базе данных. Это должно быть сделано только перед отображением контента, а не перед хранением.