чешский символ 'ě' на странице php скрипт - PullRequest
1 голос
/ 26 апреля 2010

Я не могу правильно показать этот символ на своих веб-страницах. Я использую кодировку UTF-8 для этой страницы, я должен использовать ISO-8859-2? Я получаю эту строку с этим символом из БД, и на нем она сохраняется как ě. Мой браузер показывает только HTML-тег.

Это единственный символ (на данный момент), который я не могу показать на своей веб-странице. Я посмотрел на http://www.czech.cz, и они используют UTF-8.

кто-нибудь предлагает?

берегите себя! Andrea

Ответы [ 2 ]

1 голос
/ 26 апреля 2010

Прежде всего, да, вы действительно должны использовать UTF-8. Но это не значит, что у вас уже есть данные в кодировке UTF-8.

Во-вторых, похоже, что этот символ является HTML-кодом в базе данных уже . Это проблема, потому что кажется, что на любой странице, отображающей этот символ , также пытается HTML-кодировать контент. Вот пример того, о чем я говорю.

Данные от пользователя: ě
Данные HTML кодируются (через htmlentities () ) перед входом в БД: ě
Данные, хранящиеся в БД: ě
Данные, полученные из БД: ě
Данные HTML кодируются перед печатью на странице: ě
Данные, как видно в браузере: ě

Вы это видите? Символ становится двойным кодированным , поэтому на втором этапе кодирования символ амперсанда преобразуется в сам объект.

Это проблема с данными в кодировке HTML перед их сохранением в базе данных. Это следует делать только перед отображением контента, а не перед хранением.

1 голос
/ 26 апреля 2010

Вы видите ě в браузере или при просмотре источника? Если вы видите это в браузере, то, вероятно, он где-то кодируется дважды - независимо от того, выводится ли он на страницу, он, вероятно, обнаруживает его как не кодированный HTML и пытается защитить вас от какого-либо HTML-внедрения. Вы захотите, чтобы это не делалось. Но у вас есть еще более глубокая проблема. Если ваша страница обслуживается в UTF-8, а ваши данные - в UTF-8, нет никаких оснований превращать ее в сущность HTML. Вы должны проходить через данные UTF-8. Вам не необходимо переключиться на другую кодировку символов.

...