Недавно я преобразовал старую базу данных MySQL, хранящуюся как latin1_swedish_ci, в utf8_general_ci. Теперь у меня есть заголовок HTTP, определяющий UTF-8, HTML-тег на странице, а данные в базе данных правильно кодируются как utf8_general_ci.Проблема кодирования символов между различными версиями PHP, Apache и MySQL
Все это отлично работает на моем тестовом сервере, поэтому я загружаю обновленные HTML-файлы и скрипты PHP в промежуточную область на реальном сервере. Затем я заменю старую промежуточную базу данных на экспорт из тестовой базы данных.
И теперь на месте размещения есть юникодные сущности, а не каждый апостроф.
Такая же база данных, такой же код, но там не работает.
Разница между тестовым сервером и промежуточной области является то, что тестовый сервер является следующее:
Тест:
- Apache 2.2.15
- РНР 5.3.2
- MySQL 5.1
Проведение: (Да, это ужасно устарело, но это из-под контроля)
- Apache 1.3.37
- PHP 5.2.3
- MySQL 4.1.15
Любая идея, что является причиной его не работу на промежуточном сервере?
Как вы выполнили экспорт из тестовой базы данных в промежуточную базу данных? туздЫшпр? PhpMyAdmin? – Charles
'latin1_swedish_ci' и' utf8_general_ci' не являются символьными кодировками, они являются сопоставлениями - они контролируют, как сортировка выполняется в БД. ref: http://dev.mysql.com/doc/refman/5.5/en/charset.html –
@Charles: PHPMyAdmin – Macha