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…
pogledaj ovo
http://www.tongfamily.com/2008/04/wordpress-not-d…
Hvala, bice korisno sledeci put 🙂