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

UTF8 i čudan collation

[es] :: Firebird/Interbase :: UTF8 i čudan collation

[ Pregleda: 4135 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon UTF8 i čudan collation23.09.2013. u 08:02 - pre 77 meseci
Do sad sam koristio WIN1250 i BS_BA colaltion i dobi bi ispravan poredak ČĐŠ-ova, no taj collation nije CI
Zbog budućnosti i svega ostaloga sa odlučio prijeći na UTF, no UTF + bilo koji od collationa (meni interesantan UNICODE_CI) ne daje dobar poredak. Dobijem npr 3 sloga sa C, pa 2 sa Č, pa opet 3 sa C pa jedan sa Č, uglavnom bezveze.
Ima li tome lijeka? Da odustanem od UTF8? Šteta jer radis s Delphijem XE5 i IBDAC-om, koji to sve lijepo podržavaju bez puno "kemije".
God is real unless is declared as integer.
 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: UTF8 i čudan collation26.09.2014. u 13:43 - pre 65 meseci
Nakon nešto vremena, puno testiranja i googlanja uspio sam pronaći riješenje.

Firebird podršku za internacionalizaciju vuče kroz ICU libove. U verziji 2.5 (vjerojatno i ranijima) koristi lib verzije 3.0 koji nema podršku za dosta collationa.

Sa stranice http://site.icu-project.org/ treba skinuti dll-ove za 32 ili 64 bita ovisno o tome koji se server vrti.

Skinuo sam zadnju verziju 5.4 (podrška za UTF verz. 7)

Datoteke: icudt54.dll, icuin54.dll i icuurc54.dll kopirati u \bin direktorij.

Potom treba registrirati nove intl libove.

U \Intl treba promjeniti datoteku fbintl.conf.

Treba promjeniti verziju liba, tj. dodati novu i to samo u builtin sekciji.

Code:

<intl_module builtin>
    icu_versions    default 5.4
</intl_module>


Vrijednost default podrazumijeva firebirdov defaultni (3.0) lib. Ako se stavi samo 5.4 bit će problema sa otvaranjem baza rađenih sa starom verzijom ICU.
Ako se serveri razlikuju po verziji ICU bazi se može pristupiti tek nakon što se restora na novi server iz backupa. NO meni evo radi ako je ovaj default zadržan.

Nakon ovoga slijedi restart.

Na bazi definiranoj s UTF8 charsetom treba još registrirati nove collatione.

Treba izvršiti svaku naredbu zasebno i svaku comittati.

Code:

create collation UTF8_CROATIAN_CI for UTF8 from UNICODE CASE INSENSITIVE 'LOCALE=hr_HR;ICU-VERSION=5.4';
create collation UTF8_CROATIAN_CS for UTF8 from UNICODE CASE SENSITIVE 'LOCALE=hr_HR;ICU-VERSION=5.4';
create collation UTF8_CROATIAN for UTF8 from UNICODE 'LOCALE=hr_HR;ICU-VERSION=5.4';


Važno je navesti ICU-VERSION kako bi FB znao koji lib koristiti.

Vjerojatno ima još sitnica i činjenica koje nisam vidio ili isprobao no konačno sam došao do željenog pravilnog collationa. Prepoznaje i slijed za slova DŽ, LJ i NJ kako bi i trebalo :)

Ovo mi je oduzelo nekoliko sati googlanja, čitanja i istraživanja no u konačnici evo radi.

Nadam se da sam bar nekome pomogao ako naleti na ovaj problem. Očigledno po odgovorima nitko nije imao potrebe igrati se s ovime (ili svi vole MS SQL ili MySQL server).

Sad vidim i podršku za: sr_Cyrl sr_Cyrl_BA sr_Cyrl_ME sr_Cyrl_RS sr_Latn_BA sr_Latn_ME sr_Latn_RS znači, interesantno je za cijelo exYu područje i sve koji misle raditi internacionalizirane programe.

[Ovu poruku je menjao komplikator dana 26.09.2014. u 14:59 GMT+1]
God is real unless is declared as integer.
 
Odgovor na temu

[es] :: Firebird/Interbase :: UTF8 i čudan collation

[ Pregleda: 4135 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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