2010-04-26 1 views
1

Я не могу правильно показать этот символ на своих веб-страницах. Я использую кодировку UTF-8 для этой страницы, могу ли я использовать ISO-8859-2? Я получаю эту строку с этим символом из db и на нем, он сохраняется как ě. Мой браузер показывает только тег html.czech char 'ě' на php page script

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

любые предложения?

заботиться! Andrea

+0

Как насчет ссылки на вашу страницу? –

+0

http://www.fornacigrigolin.it/cz/ProdottiFamiglia.php?id_cat=2 –

ответ

1

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

+0

Это мой браузер, что он не в состоянии перевести код «&@ 283;». Существует также проблема. У меня есть страница администратора для загрузки на db строки, а перед обновлением на db я вызываю $ text = htmlentities ($ text, ENT_QUOTES) ;. Для всех других языков все правильно, но не для этого символа ..... –

+1

Используйте 'htmlspecialchars' ** не **' htmlentities'. 'htmlentities' пытается кодировать все символы, отличные от ASCII, которые бесполезны и будут повреждать их, если вы не укажете правильный набор символов. По умолчанию он устарел от старого ISO-8859-1. – bobince

1

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

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

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

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

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

+0

Ты мужчина! Это проблема ... Итак, я должен удалить htmlentities() до dong в DB, ​​не так ли? –

+0

Но не совсем понятно, почему на db у меня есть этот «Vrchn & iacute; om & iacute; tky a vyrovn & aacute; vac & ia». и это правильно показано в моем браузере ... –

+0

Вы должны использовать 'htmlspecialchars' при выводе текста на HTML-страницу и' htmlentities' никогда. Не входите в базу данных с помощью HTML-escape-контента. – bobince

 Смежные вопросы

  • Нет связанных вопросов^_^