Инсталация на форум / електронен магазин / попълни необходимото, на MySQL с колация на таблиците latin1 и текст на кирилица, който реално е в cp-1251. Налага ни се да мигрираме, копираме, ъпгрейдваме, (попълни каквото ти скимне тук).
Класиката на омазването - mysqldump конвертира файла в unicode (utf8), но решава че изходните данни са в latin1 (ISO 8859-1) character set.
Решението:
- Прави се дъмп с изрично зададен latin1 encoding (не винаги възможно)
- Конвертираме файла по дългият начин.
- бекъп на файла
- recode utf8..latin1 dump.sql
- unix2dos dump.sql
- recode cp1251..utf8 dump.sql
- замяна на всички CHARSET=latin1 COLLATE=latin1_bin с CHARSET=utf8 COLLATE=utf8_bin
- най вече на /*!40101 SET NAMES latin1 */ с /*!40101 SET NAMES utf8 */
- импорт на така конвертираният дъмп
- Ако някъде в текста се срещат апострофи, на финала те няма да бъдат ескейпнати. Т.е. се налага редакция на ръка.
- Новата версия на MySQL (MariaDB) не винаги се съобразява с default-character-set подаден на команден ред и съответно може да се наложи да се сменят стойностите в my.cnf
Няма коментари:
Публикуване на коментар