Juče sam se žalio na problem koji je nastao prilikom importovanja MySQL baze na novi server - sva naša slova, a naročito par ćiriličnih postova, pretvorili su se u neke čudne i potpuno nerazumljive znake. Posle mnogo experimentisanja i “druženja” sa Googlom uspeo sam da rešim problem. Rešenje možda nije baš najpraktićnije, ali radi :)

Zbog haosa koji je postojao u bazi (razlicit charset i collation za pojedinacne tabele) odlucio sam da sve prebacim u UTF-8.Prvo sam exportovao celu bazu:

$ mysqldump --user=korisnik -p --default-character-set=latin1 -c --insert-ignore --skip-set-charset baza > baza.sql

tako sam dobio tekstualni fajl koji sadrzi sve podatke iz baze. Ideja je bila da promenim encoding karaktera u ovom fajlu. To moze da se uradi jednostavno sa:

$ iconv -f ISO-8859-1 -t UTF-8 baza.sql > baza_utf8.sql

Posle ovoga sam obrisao staru bazu sa servera, i kreirao novu:

$ mysql --user=korisnik -p --execute="DROP DATABASE ime; CREATE DATABASE ime CHARACTER SET utf8 COLLATE utf8_unicode_ci;"

Sada je trebalo napuniti bazu i vratiti podatke:

$ mysql --user=korisnik -p --default-character-set=utf8 ime < ime_utf8.sql

Ovaj postupak sam probao dva puta - prvi pokušaj je bio potpuno bezuspešan, tako da sam u drugom editovao sql fajl i izbacio iz dela za kreiranje tabela sva podesavanja za charset i collation. Ovaj drugi pokušaj dao je dobar rezultat. Situacija je bila mnogo bolja, ali još je bilo daleko od uspešnog - bilo je još mnogo tekstova sa čudnim znacima.

U nedostatku boljih ideja odlučio sam da primenim “silu”. Ponovo sam, na isti način, exportovao bazu i dobijeni SQL fajl otvorio u običnom text editoru. Krenuo redom kroz tekst i kad god bih negde naišao na neki čudan zank (tj. par znakova, svako naše slovo bilo je zamenjeno sa dva znaka, a neki specijalni znaci sa 3-4 druga) iz teksta bih utvrdio koje je to slovo i posle funkcijom Repalce zamenio taj zank odgovarajućim. Isti postupak ponovio sam za sva slova, a posle toga i za specijalne znake (navodnike, crticu, neke simbole u formulama) koje sam zamenio html tagovima.

Kada je to bilo gotovo, obrisao sam bayu sa servera, kreirao novu i importovao ovaj izmenjeni fajl. BINGO - sve je na svom mestu! Ostalo je još par ćiriličnih postova u kojima se baš ništa ne vidi i grčka slova u nekim formulama, ali to drugom prilikom :)

ps. Nadam se da svi tekstove lepo vide, ako neko primeti neki problem neka javi…

Share/Save/Bookmark