Днес трябваше да направя Upgrade на едно старо приложение от преди доста години, обаче преди като съм го правил съм допуснал грешка.
Забравил съм да сложа encoding на таблиците и е останал подразбиращият се: latin1. С него кирилицата си работи, но не напълно коректно. Проблема беше че не може да сортира правилно по азбучен ред (напълно логично е все пак, друга таблица).
За целта за да видя какво пише като се свържа трябва да изпълня: SET character_set_client = utf8; и всичко се фиксва. Сега обаче възнамерявам да фиксна това.
1. Експортвам ставара инфо: mysqldump -uroot -p --compatible=mysql40 radiolist > d1.sql
2. Коментирам всички по- долу изброени редове:
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
Hint: Примерен коментар: /* primeren komentar */
3. След всяко създаване на таблица добавям:
DEFAULT CHARSET=cp1251
Пример:
CREATE TABLE `lists` (
`art_id` int(5) unsigned NOT NULL auto_increment,
….
) TYPE=MyISAM AUTO_INCREMENT=562525 DEFAULT CHARSET=cp1251;
4. Oтварям файла с Word и го записвам с Encoding: Windows cp1251.(Интересното беше, че нещо ми се закучи с iconv както и да е).
5. Импортирам новата база с коригирам encoding:
mysql -uroot -p radiolist --default-character-set=cp1251 < word_test.sql
6. Това е всичко :)
Проблем с MySQL encoding,
С кой Word го отваряш? Microsoft Word или някакъв линукски аналог?
Защото при отварянето с M$ Word той си добавя мнооого излишен код. Да не говорим за HTML и CSS файловете…
Не виждам логика. Когато записваш в html или други подобни формати добавя ДА, но в моя случай където отварям и записвам текстов файл няма какво да добави.