Avaleht
uus teema   vasta Tarkvara »  WWW »  e107 char encodingu probleem mysql'ist lugemisel [korras] märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
siinus
HV Guru
siinus

liitunud: 20.01.2007




sõnum 15.07.2009 15:43:07 e107 char encodingu probleem mysql'ist lugemisel [korras] vasta tsitaadiga

http://m8.offlain.com/
seal tekib probleem mysql'ist info väljalugemisega.
Probleem põhiliselt see, et süsteemi e107 tabelid on latin encodingus, aga oma vajalikud tabelid on utf-8
kuidas saaks kõige valutumalt need täpitähed välja pritsida, et süsteem püsti jääks.
proovisin mingit convert käsku php'ga, aga siis läks ž täht kaduma
Olemasolev db on liiga mahukas, et hakata kõike ümber muutma.

_________________
suck less | ANNA MU SAI!
Ma arvasin, et see oli Priit, aga tegelikult oli Tõnu,


viimati muutis siinus 16.07.2009 18:20:41, muudetud 1 kord
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 15.07.2009 16:03:02 vasta tsitaadiga

Kas proovisid funci utf8_encode ?
http://ee.php.net/utf8_encode
Definitsiooni järgi see konverdib iso-8859-1 (ehk latin1) utf8'sse.
Kui multibyte funcid on php's peale keeratud siis soovitatav on läbi mingi taolise funci lasta (samast php lehelt võetud):

function FixEncoding($x){
  if(mb_detect_encoding($x)=='UTF-8'){
    return $x;
  }else{
    return utf8_encode($x);
  }
}

iconv extenstioni olemasolul saad ka teha $string = iconv('latin1', 'UTF-8', $string);

Ise soovitaks ikkagi baasi ära konvertida, kuna iga stringi kontrollimisega ja konvertimisega tuleb päris pirakas overhead otsa lehele...
Baasi konvertimine on suur töö aga kui ise miski normi skripti valmis teed mis võtab latin1 teksti ja utf8'sse konverdib kõikides tabelites kõikidel ridadel (select, convert, update), siis on see ainult ühekordne töö versus see et igal kuvamisel alati uuesti konvert funci jooksutada.

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
siinus
HV Guru
siinus

liitunud: 20.01.2007




sõnum 15.07.2009 16:11:27 vasta tsitaadiga

aga kas on võimalik convertida e107 enda baas, niiet ta oleks sarnane teistele tabelitele?
proovisin korra, aga e107 ei loe ikka koralikult välja (ma ei leia koodijuppi, kus võib äkki mingi convertimine toimuda)

edit:
mb_detect_encodinguga ka proovisin kuidagi, aga ž(katusega z) läheb tõlkes kaduma.

_________________
suck less | ANNA MU SAI!
Ma arvasin, et see oli Priit, aga tegelikult oli Tõnu,
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 15.07.2009 16:18:42 vasta tsitaadiga

kindel et seal on latin1 (iso-8859-1) ?
Äkki on seal charsetiks hoopis iso-8859-4 pandud ?
Proovi iconv funciga teha $string = iconv('ISO-8859-4', 'UTF-8', $string);

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
siinus
HV Guru
siinus

liitunud: 20.01.2007




sõnum 15.07.2009 17:19:00 vasta tsitaadiga

inzinz kirjutas:
kindel et seal on latin1 (iso-8859-1) ?
Äkki on seal charsetiks hoopis iso-8859-4 pandud ?

latin1_swedish_ci


ja ž läheb ikka tõlkes kaduma

_________________
suck less | ANNA MU SAI!
Ma arvasin, et see oli Priit, aga tegelikult oli Tõnu,
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 15.07.2009 17:46:25 vasta tsitaadiga

Mysql tabeli charset on üks asi, hoopis teine on see, mis charsetiga string sinna tegelt sisse pandud on.
Äkki saad teha näiteks dumpi mingist test tabelist kus see katusega z sees on, saan huvi pärast oma masinas proovida mis toimub.

Kui sul ennem oli lehel pandud headerisse et charset oli iso-8859-4 ja meta tagis ka, siis andmebaasi tõenäoliselt läksid php'st stringid otse sisse tolles kodeeringus, mitte latin_swedish_ci kodeeringuga/collationiga

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
siinus
HV Guru
siinus

liitunud: 20.01.2007




sõnum 16.07.2009 18:21:03 vasta tsitaadiga

andmebaasis on ž täht inimsilmale loetav st. on õiges kodeeringus(utf8).
e107 tabelid on latin1, kuigi sisu on teises encodingus.
edit: saatsin ps
edit2: sain korda

_________________
suck less | ANNA MU SAI!
Ma arvasin, et see oli Priit, aga tegelikult oli Tõnu,
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  e107 char encodingu probleem mysql'ist lugemisel [korras]
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.