ugrás a tartalomhoz

Ékezetek visszaállítása

duplabe · 2008. Május. 6. (K), 13.41
Sziasztok!

Van egy postgres adatbázisom, tele adatokkal. Minden utf-8, viszont a set names utf8-at nem állították be, így az ékezetes karakterek helyett ĂĄ és társai vannak. Hogyan kéne ezt php-ben normális utf-8 as karakterekké konvertálni? Mert az egy dolog, hogy megjelenik mindenhol, viszont amikor darabolom a stringeket és pont két ilyen karakter közé esik a határ akkor rosszul jelennek meg. Próbáltam str_replace-szel, de nem jött össze...
 
1

Lement, visszatárol.

janoszen · 2008. Május. 6. (K), 13.54
Kiolvasod set names latinx-el, majd visszaírod set names utf8-cal. str_replaceel is lehet próbálkozni de akkor ki kell gyűjteni a a karaktereket. Adott esetben a recode utility is segíthet.
2

replace kellene ide

duplabe · 2008. Május. 6. (K), 14.53
hiába olvasom ki latinx-el, mert attól ezek a dupla karakterek ugyanúgy megmaradnak, bármivel is írom vissza. Plusz az adatbázist se nagyon bántanám, ha nem muszáj. str_replace-szel kellene kicserélni ezeket, csak nem tudom, hogy hogyan. Próbáltam egy az egyben (pl: ĂĄ -> á), hexadecimális értékekkel, de nem sikerült. Nem találtam sehol, hogy mit kéne cserélni.
3

Nem

janoszen · 2008. Május. 6. (K), 15.03
Nem jól mondod. Kiolvasod ugyanazzal a kódolással, amivel betöltötted, ezzel binárisan visszakapod az eredeti formáját az adatoknak, tehát egy két bájtos UTF-8 karakter két bináris bájt lesz a memóriában. Ezek után átállítod az adatbázis kapcsolatot és a jó kódolással betárolod.

Ha nem szeretnéd ezt az utat járni, akkor viszont, mint mondottam, recode/iconv.
4

áhá

duplabe · 2008. Május. 6. (K), 15.41
Már értem. :) Ez a megoldás működik is és bár el akartam kerülni az adatbázis piszkálását, csak ez tűnik a legelegánsabb módszernek.

Köszi!