[ Venom Inc. @ 25.02.2007. 17:03 ] @
Utroshio sam dva dana na ovo, izmedju ostalog chitajuci jednu temu na ovom forumu, ali ipak nisam uspeo sam da reshim problem. A da budem potpuno siguran ni meni vishe nije jasno u chemu je tachno problem.

Dakle, potrebno mi je da prebacim sajt na UTF-8. Sama promena meta taga na utf-8 je ochekivano izazvala gomilu ? umesto karaktera koji bi tu trebalo da se pojavljuju. Kad uradim SHOW VARIABLES LIKE 'character_set_database'; dobijem vrednost latin1.

Deo za unos tekstova i ostalih podataka na sajtu nije imao nikakav character encoding i pretpostavljam da je sve uneseno kao ISO-8859-1.

Svukao sam bazu na hard i instalirao neku bundled varijantu servera da bih se sa tim poigrao u lokalu. Probao sam gledajuci par strana na netu da prebacim bazu u utf-8 i tu sam, verovatno zato shto neshto nisam dobro radio, dobijao razne rezultate - nazalost nijedan da sve radi kako treba.

I na kraju mi se sinoc desi neshto shto me potpuno zbunilo. Dumpovao sam bazu, jer sam video da pri opciji import u phpMyAdmin imam opciju "Character set of the file"; po defaultu je utf8. Izabrao sam latin1, importovao .sql fajl i poof, odjednom je sve proradilo. Index.php ima encoding utf-8, za SHOW VARIABLES LIKE 'character_set_database'; dobijam latin1, ali svi karakteri su prikazani kako treba.

Da li je to procedura koju bi trebalo da odradim i na samom sajtu i da li je to uopshte OK?
[ Jbyn4e @ 26.02.2007. 08:10 ] @
Ovo sve sto si pisao zavisi da li je mysql 4 ili 5. 5-ica ima dodatne varijable. Ako imas negde i 4-ku probaj:
SHOW VARIABLES LIKE 'c%';
i videces veliku razliku.
Pri tom, ako koristis php5 i mysql5 , ako ti je baza u utf-8 i collation u utf-8, a php radi po defaultu sa latin1, koristi se mysql_query('SET NAMES UTF-8'); ili tako nekako da ne bi dolazlilo do konverzije pri konekciji.

Proveri iz php-a, napravi test.php u kome ces izvrsiti prvi sql, i ispisi ga na ekran sa print_r, pa vidi sta dobijas prilikom konekcije iz php skripta.
[ Venom Inc. @ 26.02.2007. 13:43 ] @
Hteo sam i to da napishem, ali je uvodni post vec bio predug - MySQL na hostingu je 4.1.10, dok se ja ovde igram sa 5 neshto.

SHOW VARIABLES LIKE 'c%'

character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8
collation_connection utf8_unicode_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

Nisam(nismo) najbolje shvatio za test.php.
[ Jbyn4e @ 27.02.2007. 15:52 ] @
Kao sto vidis baza ti je u latin1 a klijent kojim se kacis u utf-8 pa dolazi do konverzije znakova. Verovatno je tako i kad se kacis iz php-a - a ono sto sam hteo da kazem da napravis test.php - u njemu se povezi na server (mysql_connect), uradi query sa show variables... (mysql_query) i stavi vrednost u niz (mysql_fetch_array ili koja vec bese), i na kraju ispisi taj niz da vidis sta sve ima u njemu (print_r). Ne mislis valjda da cu ti ja pisati test.php?

Resenje za tebe je da exportujes bazu sa 4.1 baze normalno - dobices latin1 tekst fajl. U my.cnf (ne znam gde ti se nalazi) potrebno je da postavis promenljive da baza bude u utf-8 i clijent u utf-8 (pogledaj o tome na
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html), zatim da restartujes mysql server i proveris da li je to tako (opet show variables.... koje sad moraju da imaju svuda utf8), da pomocu phpmyadmina sad importujes taj fajl i kazes da je on u latin1 kodnom rasporedu - ovo bi trebalo da ti napravi bazu u tf-8 kodnom rasporedu. Nakon toga, u svakom svom skriptu bi trebalo da i php skriptu kazes da koristi utf8 kodni raspored koristeci mysql_query('SET NAMES UTF-8'); komandu.

Toliko ti mogu samo reci, a za ostalo ces morati sam... srecno!
[ Venom Inc. @ 28.02.2007. 01:21 ] @
Hvala.

Ako nekog zanima shta je na kraju upalilo - ono iz uvodnog posta, a i ono shto je Jbyn4e napisao na kraju. Dodushe ono shto me u stvari muchilo, a to je, zashto sam importovao bazu kao latin1, a sve se vidi ok sa utf-8 encodingom mi i dalje nije jasno, but... whatever.

Stari sadrzaj je medjutim i dalje pomalo ko zna gde. Dokaz za to je da search na sajtu ne pronalazi č ć i đ - sad sam otvorio jednu vest, samo kliknuo edit i to je bilo dovoljno da search pronadje ć. Opet, whatever, bitno je da radi. Mogu da se posvetim pravom poslu.