Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Indy web server + UTF8 + Firebird + IBO

[es] :: Pascal / Delphi / Kylix :: Indy web server + UTF8 + Firebird + IBO

[ Pregleda: 1455 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milos D
Beograd

Član broj: 5621
Poruke: 280
*.adsl-a-11.sezampro.rs.



+1 Profil

icon Indy web server + UTF8 + Firebird + IBO08.03.2011. u 09:33 - pre 159 meseci
Šizim sa ovim charsetovima.

Baza je UTF8, collation je UTF8, web stranice su UTF8, pri konekciji na bazu biram UTF8 charset.

Prvo je problem bio što IBO iz nekog razloga za blob polja ne vrši UTF8Encode/UTF8DEcode pa sam to sam dodao.

E sad, napokon u bazi dobijam naša slova, i na web stranicama dobijam naša slova, ali sortiranje ne radi. Naša slova dolaze na kraju i to me dovodi u sumnju da opet negde grešim. Inače, UPPER i LOWER rade kako treba sa našim slovima.
 
Odgovor na temu

Milos D
Beograd

Član broj: 5621
Poruke: 280
*.adsl-a-11.sezampro.rs.



+1 Profil

icon Re: Indy web server + UTF8 + Firebird + IBO08.03.2011. u 10:25 - pre 159 meseci
Hmmm ako stavim

select from... collate unicode

onda naša slova više ne budu na kraju, ali nisu baš ni tamo gde treba da budu, osim Ž i Đ...

aćbcdđče ... ršs ... zž
 
Odgovor na temu

Milos D
Beograd

Član broj: 5621
Poruke: 280
*.adsl-a-11.sezampro.rs.



+1 Profil

icon Re: Indy web server + UTF8 + Firebird + IBO09.03.2011. u 10:57 - pre 159 meseci
Uhh...

OK ajde da probam da odgovorim samom sebi, izmišljam toplu vodu ali možda će nekome pomoći.

Naša slova u bazi uopšte nisu bila naša slova. A zašto su onda na ekranu izgledala kao naša slova? Zato što je srpski odabran kao "language for nonunicode programs" a to izgleda znači "prikaži Č kao Č, ali usput prikaži i sve drugo što nije Č ali malo podseća na Č kao prokleto Č".

Dakle, da bi izbegao dalje zabune isključujem tu opciju za unicode programe. E sad slede novi problemi.

Prvo što dovlačenje podataka iz baze preko Field.AsString pretvara sva naša slova u običan ascii, Č u C itd. AsString zove UTF8Decode funkciju koja za non-unicode program bez odabranog "language for nonunicode..." sve lepo svede na ascii. Srećom postoji AsRawString u kojem je UTF8 netaknut. Ali, ako takav string prosledim kao Response.ContentText dobijam "kuke i kvake" na web stranici.

edit: ok, umesto Response.ContentText treba koristiti Response.ContentStream i onda UTF8 "preživi"...

Drugi problem, INDY sve URL GET/POST parametre lepo opet "prevede" pomoću UTF8Decode na ascii tako da ažuriranje baze ne radi kako treba. OK, opet, INDY http request ima UnparsedParams property, pa uz malo parsiranja sa moje strane dolazim do UTF8 kodova...

Ako neko zna kako da sve ovo elegantnije rešim, hvala unapred.

[Ovu poruku je menjao Milos D dana 09.03.2011. u 12:39 GMT+1]
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Indy web server + UTF8 + Firebird + IBO

[ Pregleda: 1455 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.