Кодировка символов PHP � знак вместо à - PullRequest
3 голосов
/ 23 сентября 2011

Привет, это очень странная ошибка, которую я имею на некоторых страницах этого сайта Joomla:

http://www.pcsnet.it/news

Если вы укажете подробности конкретной новости, символ à будет отображаться правильно.

Другие акцентированные символы, похоже, не затронуты.

Я проверил, что кодировка UTF-8 используется по умолчанию и в базе данных MySql, и что текстовые файлы в кодировке UTF-8.

Другие идеи?

Ответы [ 3 ]

6 голосов
/ 23 сентября 2011

Что очень интересно в вашем случае, так это то, что оно влияет только на букву à!Так что это не может быть проблемой кодирования.

Вот мое мнение о вашей проблеме.Буква à кодируется двумя байтами в utf8.Первый байт - xC3, что в латинице-1 равно Ã, второй байт - ... неразрывный пробел!(Другие акцентированные буквы, такие как è, кодируются как Ã, за которым следует другая акцентированная буква в латинице-1, и они не затрагиваются.)где-то скрипт, который удаляет или заменяет неразрывный пробел в латинице-1, то есть символ xA0.Результирующий одиночный байт xC3 не может быть отображен должным образом, поэтому вместо него отображается общий заполнитель .(просто загрузите свою страницу в латинице-1, вы увидите, что я прав).

Найдите тот скрипт, который удаляет неразрывные пробелы, и все будет в порядке.

0 голосов
/ 23 сентября 2011

Знак usually обычно указывает на то, что символ, который пытается отобразить браузер, недоступен в используемом шрифте.Это, вероятно, не а, если это работает на других страницах (используя тот же шрифт).

0 голосов
/ 23 сентября 2011

Вы случайно не используете htmlentities, htmlspecialchars или html_entity_decode в тексте, который вы получили из базы данных? Если это так, вам нужно ввести UTF8 в третьем параметре, потому что это не кодировка по умолчанию для этих функций.

Пример: htmlentities('£hello', null, 'utf-8');

...