Проблемы с набором символов при обновлении с Symfony 2.0.* до Symfony 2.1.*?

Недавно я обновил свой промежуточный тестовый сайт до последней версии Symfony и обновил всех поставщиков с помощью композитора, как указано в документе по обновлению, который поставляется вместе с загрузкой.

Все обновилось нормально, но теперь я заметил, что некоторые фрагменты HTML не отображаются в шаблонах Twig.

Я провел сравнение с текущим живым сайтом, и, похоже, это проблема с набором символов. В качестве примера у меня был выпадающий список со следующим значением:

Kitchen Ducting > Ducting Kits > Ducting Kit 4” / 100mm

На обновленном сайте элемент раскрывающегося списка просто стал пустым. Когда я использовал необработанную функцию Twig, он снова отображал элемент, но со страшным вопросительным знаком в черном ромбе.

Kitchen Ducting > Ducting Kits > Ducting Kit 4� / 100mm

Вещи, которые вы должны знать, которые могут помочь:

  • Промежуточный тестовый сайт и рабочий сайт находятся на одном сервере.
  • В моем файле httpd.conf у меня есть «AddDefaultCharset utf-8».
  • В моем файле php.ini у меня есть 'default_charset = "utf-8"'.
  • Обслуживаемый HTML-файл имеет метатег Content-Type 'content="text/html; charset=utf-8"'.
  • Моя база данных InnoDB и использует «utf8» в качестве набора символов по умолчанию и «utf8_general_ci» в качестве сопоставления по умолчанию. Все таблицы в базе данных также используют значения по умолчанию.

Я просмотрел спецификацию с UTF8, но не смог понять, проблема в этом или нет?


person Adam Stacey    schedule 12.11.2012    source источник


Ответы (1)


Мне удалось решить проблему, отредактировав файл конфигурации MySql на сервере (/etc/my.cnf) и добавив:

skip-character-set-client-handshake
collation-server=utf8_general_ci
character-set-server=utf8

Это уладило это для меня. Я не уверен, что это было что-то, что изменилось в Twig или Doctrine из-за обновления до Symfony, но что-то в обновлении привело к тому, что кодировка по умолчанию не работала. Изменения, которые я внес в конфигурацию MySQL, означали, что она всегда будет возвращаться к UTF-8.

person Adam Stacey    schedule 13.11.2012