[ ppavlovic @ 11.04.2004. 14:45 ] @
Namerno sam pogresio padez u naslovu

Elem... Svuda kazu da MySQL ne podrzava UTF-8. Podrzava itekako, samo ima "mali" problem sa sortiranjem.

U tabeli smestam cirilicni tekst. Kad zelim da sortiram po azbuci, izbacimi slovo Lj (lj) pre svih. Kako da prevazidjem ovaj problem? Sajt mi se nalazi na shared hostingu, u pitanju je verzija 2.23.xx i ne mogu da menjam nista od konfiguracije servera, a kamo li da ga rekompajliram.

Hvala na pomoci.
[ _owl_ @ 11.04.2004. 18:48 ] @
Citat:

Podrzava itekako, samo ima "mali" problem sa sortiranjem.

Problem je resiv, samo moras da se malo potrudis. Razmisli o dodavanju jos jedne kolone koja bi sluzila za sortiranje rezultata umesto kolone sa tekstom. Naravno njen sadrzaj zavisi od teksta koji se nalazi u koloni po kojoj bi se sortiranje vrsilo. U knjizi SQL Performance Tuning (izdavac Addison Wesley) imas napisan nacin kako se to radi (pogledaj linkove ka on-line literaturi na es-u).
[ ppavlovic @ 12.04.2004. 03:06 ] @
I am so smart, I am so smart, S.M.R.T, I mean S.M.A.R.T
Evo reseeeeeenjaaaaaa...

Code:

$query = "SELECT pid, title_sr, LEFT(title_sr,2) AS prvo_slovo 
FROM pages ORDER BY field(LEFT(title_sr,2),'A','B','V','G','D','Đ','E','Ž','Z','I','J','K',
'L','Lj','M','N','Nj','O','P','R','S','Š','T','Ć','U','F','H','C','Č','Dž','Š',
'a','b','v','g','d','đ','e','ž','z','i','j','k',
'l','lj','m','n','nj','o','p','r','s','š','t','ć','u','f','h','c','č','dž','š')";


Elem, ono sto mi je pravilo problem je sto treba da se uzmu prva dva bajta za jedno slovo kada se koristi UTF-8. Ne znam zasto je to tako i ne interesuje me! Elem, upit radi, a ako zelite da sortirate po vise od dva slova, dodajte jos jedan uslov pri sortiranju Field(MiD(...))
[ _owl_ @ 12.04.2004. 14:50 ] @
A ako zelis da se pri sortiranju uzima ceo string (nesto tipa telefonski imenik, adresar ili sta vec)??
[ galisnik @ 21.07.2004. 07:24 ] @
Ne znam za prijašnje verzije (nisam sa njima radio), ali mysql 4.1.x može bez ikakvih problema da sortira i našu latinicu i našu ćirilicu. Doduše ovo važi za Windows okruženje.

Za latinicu je postupak sledeći:
kreirati tabelu sa podrazumjevanim character setom cp1250 i podrazumjevanim collation cp1250_general_ci
Vrlo je važno da definišete charset konekcije preko koje insertujete i selektujete podatke. Ona mora imati takođe cp1250 charset. To je najlakše uraditi ovako: nakon što klijent uspostavi konekciju sa mysql serverom prva naredba koju pošalje treba biti SET NAMES cp1250;

Za ćirilicu je sve potpuno isto osim što je charset cp1251, a collation cp1251_general_ci.

Ovo odlično radi, kako rekoh, u Windows okruženju, međutim, problemi na webu su veći jer razni računari imaju razne kodne stranice.

Ja sam se s ovim patio već skoro 6 mjeseci, ali sada znam šta treba. Ako neko koristi Linux i web, bio bih mu zahvalan za njegova iskustva po ovom pitanju.
[ Gojko Vujovic @ 21.07.2004. 07:58 ] @
Moze li se to isto izvesti sa unicode charsetom? Posto taj cp1250 nema
dosta korisnih znakova.
[ galisnik @ 21.07.2004. 08:43 ] @
Zavisi šta želiš. Za naše sortiranje jedino ispravno je prema mojim saznanjima ovako kako sam naveo. Ima slovenian utf8 ali on ne sortira dobro slovo 'ć' (c sa uzlaznim akcentom - grad Ćuprija npr), jer slovenci nemaju u svom jeziku tog slova.
Poenta je da prije bilo kog inserta, updatea ili selecta javis serveru ispravan charset koji tvoja konekcija koristi (na nasim Windows masinama je to obicno ili cp1250 za latinicu ili cp1251 za cirilicu).