У меня есть база данных MySQL с таблицей InnoDB, содержащей поля utf8_general_ci varchar.Когда я получаю их через PHP (через PEAR :: MDB2) и пытаюсь вывести их (через Smarty), я получаю ???символы.Я хотел бы знать, как решить эту проблему, которая, скорее всего, вызвана PHP.
Полезная информация:
- Это новая версия сайта.работая, у старой версии была та же проблема, хотя она не использовала ни Smarty, ни MDB2, поэтому они, скорее всего, не причина.Старый программист использовал htmlentities () для исправления проблемы, но я стараюсь избежать этого.
- Кодировка символов всех моих файлов (шаблон, источник и т. Д.) - UTF-8 без спецификации.
- Когда я отображаю страницу, все акцентированные символы (те, что в шаблонах, а не те, что исходят из MySQL) отображаются правильно, и кодировка в браузере - UTF-8.Если я вручную переключу его на ISO-8859-1, то символы из MySQL будут правильно выведены, но не другие.
По сути, кажется, что PHP или MySQL преобразует данные UTF-8содержится в базе данных по ISO-8859-1 в какой-то момент во время процесса запроса / выборки, и это то, что я хочу исправить.
Я провел большой поиск, но не нашел никакого решенияи я надеюсь, что проблема заключается в установке где-то.Я хотел бы избежать использования htmlentities () или utf8_encode (), однако это может быть единственным способом, пока не появится PHP6.
Спасибо за ваш вклад в это!