[ galisnik @ 09.07.2004. 18:23 ] @
Poštovani
Instalirao sam mysql 4.1.3 (ima podršku za uft8 character set i kompajliran
collate utf8_slovenian_ci!!). Kreirao sam mali programčić u VB-u (Koristim Win2000 Pro i Serbian Latin tastaturu i Regional settings). Kreirao sam probnu tabelu u test bazi:

CREATE TABLE `probautf8` (
`id` int(11) NOT NULL auto_increment,
`naziv` varchar(50) character set utf8 collate utf8_slovenian_ci NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Unio sam par slogova naredbom:

insert into `probautf8` (naziv) values(convert('čičak' using utf8));

Napravio sam jednostavan upit:

SELECT * FROM probautf8 ORDER BY naziv;

i dobio u Text boxu sledeće:

adžija
ćuran
brašno
czech
dvor
džak
đura
efim
čičak
čoček
čućemo se
franjo
gorila
hajduk
istina
jugo
kljucati
ključ
lašva
Ljubljana
Mrčajevci
ništarija
njuh
Oliver
Pendžer
rukohvat
Severina
sušica
Šakotić
Trogir
Uroš
vozač
zdravlje
žaba

Kao što možete primijetiti sve dobro sortira osim 'č' (vidi ga očigledno kao e sa akcentom) i 'ć' (vidi ga očigledno kao spojeno ae). Da li je greška u mysql-u kod sortiranja ili 'č' i 'ć' nisu dobro prevedeni u utf8 (inače, identično se dobija i bez upotrebe funkcije CONVERT, znači ona je u ovoj priči beskorisna)? Takođe i LJ i NJ ne vidi kao jedno slovo već kao L i J, te N i J, tj. kao dva slova (što doduše nije tako strašno kao sa č i ć)
Pošto je Win2000 već potpuno unicode spreman, greška je u mysql-u, tako bar ja mislim.

Konačno je mySQL ponudio i neko kompajlirano sortiranje koje zadovoljava naše potrebe,
ali...
[ _owl_ @ 09.07.2004. 20:55 ] @
Ako sama baza ne podrzava sortiranje koriscenog alfabeta, ipak je moguce koristiti sortiranje (koje daje zadovoljavajuce rezultate). Ceo trik se sastoji u dodavanju jos jedne kolone koja ce za svaki red da govori poziciju tog reda u odnosu na ostale po kolono po kojoj bi se inace vrsilo sortiranje (al sam sastavio recenicu, ko shvati pricace o tome)
[ Zmaj @ 11.07.2004. 01:27 ] @
Koliko znam LJ i NJ ne postoje u unikodu kao jedan znak, osim ako to nije skoro promenjeno i dodato.
[ galisnik @ 13.07.2004. 06:50 ] @
Probao sam sortirati sa dodatnom kolonom i funkcijom fields (ima jedan primjer na forumu), međutim, izgleda da ta funkcija nije unicode podržana jer mi izbacuje teško shvatljiv raspored - kao da slova koja sam napisao ne mogu biti prepoznata u podacima iz mysql baze, a za sve sam koristio utf8, a bez prefiksa _uft8'Č' mi je javljalo grešku o problemu multiple collations. Kao da se taj unicode u Win2000 ne slaže najbolje sa mysql utf8?
[ _owl_ @ 13.07.2004. 12:55 ] @
Pa mora da je negde izmedju neki program zabrljao stvar i podatke prebacio iz UTF8 u neki drugi raspored. UTF je UTF bez obzira na OS, programe itd.
[ galisnik @ 13.07.2004. 19:16 ] @
Slažem se s tobom _owl_ . Unicode je unicode (obični brojevi), ali ne fercera kako bi trebalo. Smrdi mi na mysql bug, ali to tek treba dokazati. Već sam nekoliko mailova slao na temu našeg sortiranja onima u mysqlu, ali se nisu baš pretrgli odgovoriti.
[ galisnik @ 21.07.2004. 07:32 ] @
U pogledu ovog: greška je bila do mene: nisam serveru javio ispravan charset moje konekcije. Potrebno je uraditi SET NAMES charcode (u Windowsima za našu latinicu je to cp1250, a ćirilicu 1251). Ako se ovo ne uradi ostaje charset po defaultu, a to je latin1, što ne valja za naša slova. Kad se tako uradi, onda je za slovenački alfabet je sve ok osim slova 'ć' (c sa akcentom kao Cuprija) - međutim, oni to slovo uopšte nemaju. No, u nekoj sledećoj verziji će biti i collation utf8_croatian_ci, a ne sumnjam i neki utf8_cyrilic_ci.