Мы импортируем данные из .sql сценария, содержащий данные в кодировке UTF-8 закодированы в базу данных MySQL:Базы данных: кодировка столбцов, когда это важно?
mysql ... database_name < script.sql
Позже эти данные отображается на странице в веб-приложения (подключенного к этой базе данных), опять-таки в UTF-8. Но где-то в процессе что-то пошло не так, потому что символы не-ascii отображались некорректно.
Наша первая попытка решить это изменить MySQL столбцы, кодирующим в UTF-8 (как описано, например here):
alter table wp_posts change post_content post_content LONGBLOB;`
alter table wp_posts change post_content post_content LONGTEXT CHARACTER SET utf8;
Но это не помогло.
Наконец, мы решили эту проблему, импортировав данные из сценария .sql с дополнительным флагом командной строки, который, как я полагаю, заставил клиента mysql обрабатывать данные из сценария .sql как UTF-8.
mysql ... --default-character-set=utf8 database_name < script.sql
Это помогло, но потом мы поняли, что на этот раз мы забыли изменить кодировку столбца utf8 - он был установлен в latin1
даже если utf8 закодированные данные, протекающий через базу данных (от SQL скрипт для приложения) ,
Итак, если данные, полученные из базы данных, отображаются правильно, даже если набор символов базы данных установлен неверно, то почему я должен беспокоиться о настройке правильной кодировки базы данных?
Особенно я хотел бы знать:
- Какие части базы данных полагаться на настройки кодирования столбца? Когда этот параметр имеет какой-то реальный смысл?
- В каких случаях выполняется неявное преобразование кодировки столбцов?
- Как трюк с преобразованием столбца в двоичный формат, а затем в целевую кодировку работает (см. Фрагмент кода выше)? Я все еще не понимаю.
Надежда кто-то помочь мне убрать вещи ...
Попробуйте добавить N '' к любому varchar для обеспечения кодировки Удачи :) –