Непостоянная проблема с символами UTF-8 - PullRequest
1 голос
/ 30 сентября 2010

Я использую довольно стандартный стек LAMP.

Проблема заключается в прерывистой отрисовке символов UTF-8 правильно.Примерно в 50% случаев символы, не входящие в ASCII UTF-8, отображаются правильно (например, с соответствующими диакритическими знаками), но примерно в 50% случаев я получаю знак «?»исполнение вместо.Если я перезагружаю страницу, иногда это решает проблему, а иногда нет.Это происходит со всеми браузерами на всех платформах, что предлагает проблему MYSQL или Apache, но я не смог ее решить.

Сама база данных имеет формат UTF-8, и я никогда не видел проблемыпри просмотре базы данных в phpMyAdmin.

Я запускаю команду SET NAMES utf-8 при открытии базы данных (и попытался изменить ее на команду SET CHARSET utf-8), но безуспешно.

Что меня смущает, так это то, что он прерывистый, происходит полосами, например, это происходит на 30 страницах подряд (даже если они просто перезагружаются), а затем очищается на 10 страницах, а затем повторяется на нескольких страницах.и т. д.

Вы можете попытаться увидеть проблему, нажав здесь кнопку «список»: http://latin -words.com / list_vocab.php , хотя может потребоваться много перезагрузок либосделать это или заставить его уйти

Конфигурация сервера: Ubuntu: 9.10 Mysql: 5.1.37 PHP 5.2.10 Apache 2.2.12

Любые советы будут с благодарностью?

1 Ответ

1 голос
/ 30 сентября 2010

edit:
Ради искателей, из комментариев, проблема заключалась в том, что проблема заключалась в том, что SET NAMES utf-8; (неверно) вместо SET NAMES utf8; (правильно).моя гораздо более неясная причина, опубликованная ниже, также не может быть причиной;)


Похоже на проблему с локалями & iconv, попробуйте определить, какая локаль используется в веб-сервереобрабатывать момент, когда все хорошо, и момент, когда он больше не работает (попробуйте $currentlocale = setlocale(LC_ALL,NULL); или $currentlocale = setlocale(LC_CTYPE ,NULL);, чтобы получить использованную локаль).

...