[ Zmaj @ 12.07.2004. 00:35 ] @
Da li postoji neki nacina da iskonvertujem bazu iz Win1250 kodne strane u UTF8.
Mozda nije pitanje na pravom mestu postavljeno, ali sam ga postavio ovde yato sto mi se cini da treba vise od jednog upita da bi se ovo resilo
[ Not now, John! @ 12.07.2004. 00:41 ] @
Probaj sa nekim boljim text editorom (EmEdit npr.). Otvoriš stranicu u win1250 kodnom rsporedu, pa je snimiš kao utf-8. Može se to riješiti i programski, ako imaš veliki broj fajlova koje treba konvertovati.


(Nisam dobro pročitao pitanje)
Exportuješ bazu u text fajl, pa onda uradiš ovo što sam rekao. Poslije je importuješ.

[Ovu poruku je menjao Not now, John! dana 12.07.2004. u 13:01 GMT]
[ MilošV @ 12.07.2004. 06:28 ] @
Probaj sa REPLACE
Code:
UPDATE ime_tabele SET ime_kolone = 
REPLACE(ime_kolone,znak_koji_treba_zamijeniti,znak_sa_kojim_se_mijenja);

Npr.
Code:
UPDATE posts SET post_text = REPLACE(post_text,"æ","ć");

[ NetworkAdmin @ 12.07.2004. 10:27 ] @
OK kontam da se radi by default o mySQL database. Sto se tice UTF i drugih stvari po pitanju "encoding" podrske to je uradjeno sa mysql 4.1 i tamo mozes da se igras sa podesavanjem koji je codepage... e sad prevodjenje iz jedne u drugu je opet problem za sebe... prosta promjena tipa code page nece pomoci probaj napravi tabelu iste strukture sa codepage kako zelis pa onda INSERT ... SELECT query-ja da prebacis podatke.
[ Not now, John! @ 12.07.2004. 11:07 ] @
Mislim da ovo što je Miloš predložio neće raditi, ali bi mogao pokušati sa nekim brojnim vrijednostima za pojedina slova pomoću escape karaktera (valjda MySQL to podržava). Npr. dok si još uvijek u win1250 kodnom rasporedu, zamijeni sve pojave znaka "ć" znakovima \0304\0207.
Tako nešto. Treba samo da provališ brojne vrijednosti određenih slova u utf-8 kodnom rasporedu.
[ MilošV @ 12.07.2004. 11:59 ] @
Da, u pravu si, ovo sto sam naveo u primjeru nece raditi tj. zamijenice ali ne kako treba...

Moglo bi, eventualno, da se unesu u bazu znakovi čćšđž itd. kroz utf-8 (kao referenca) tj. da se vidi kako te znakove prikazuje recimo phpMyadmin u win-1250 (bice to nesto kao "Â Ã Ä")
Zatim (i dalje u win1250) odraditi nesto kao
UPDATE posts SET post_text = REPLACE(post_text, "Š" ,"Ä");

Kad na kraju predjes u utf-8 trebalo bi da se prikaze kako treba.

Ne sumnjam da je ovo jedan od tezih nacina (moraces nekog da pitas)
[ Zmaj @ 12.07.2004. 12:50 ] @
ovo sto ste mi odgovorili je mnogo krace i jednostavnije od onoga sto sam zamisljao, moja ideja procitaj svaki slog zameni sve karaktere i upisi slog. Iz tog razloga sam i postavio pitanje ovde, nadajuci se nekom vise php odgovoru, ali sad vidim da je pitanje trebalo da ide u MySQL sobu.

Probacu ovo pa cu vam postovati resenje.
[ bluesman @ 12.07.2004. 14:43 ] @
Mozes iz php da uzmes ceo cadrzaj i promenis sve karaktere pre prikaza

ob_start();
// ovde ide tvoj kod
...
// kraj koda
$contents = ob_get_contents ()
ob_end_clean();
$trans = array(
"Š" => "Š",
"Ž" => "Ž",
"š" => "š",
"ž" => "ž",
"Æ" => "Ć",
"æ" => "ć",
"È" => "Č",
"è" => "č",
"Ð" => "Đ",
"ð" => "đ"
);
$output = strtr ($contents, $trans);
echo $output;

ovo ne moze bez output buffering (procitaj ob_* funkcije iz manuala)
[ -zombie- @ 12.07.2004. 14:51 ] @
ali gorane, to ne daje utf, već html entitete..

za sve konverzije u okviru PHPa koristite iconv() http://php.net/iconv

a za bazu je najlakše ono što je već predloženo, export u fajl, konverzija u fajlu (da li promenom enkodinga, ili zamenom pojedinačnih slova), i import nazad u bazu..
[ bluesman @ 12.07.2004. 15:18 ] @
Pa ok, znam, nego koliko vidim covek se muci sa onim sto ima trenutno pa je ovo kao "workaround" :-)

Ja sam skapirao da je njemu problem output, ako gresim sorry.
[ Zmaj @ 13.07.2004. 23:34 ] @
"Nasledio" sam bazu u win1250, prilikom daljeg razvoja, primetio sam da na drugoj masini po;inje da mi u bazu unosi umesto nasih slova &#xxx; neki kod, zatim na tre'oj masini nije ni hteo da mi pokazuje nasa slova, mad je u kodu uredno bilo napisan tag

<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">

kada sam umesto ovoga napisao

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

i pocela su da se pojavljuju nasa slova na svim masina, ali samo u novo nastalom kodu, i podacima, ali ono sto mi je ostalo je stara baza, sa win1250 podacima.

Relativno sam nov u svemu ovome, i nije mi tesko da sam resavam problem, ali ovde nemam pojma sta da radim.

Nasao sam funkciju utf8_encode(), ali dobijam Æ i slicne znake. Zato sam i pitao da li postoji neki nacin da iskonvertujem bazu, da ne bih stalno radio konverziju