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

unicode sortiranje

[es] :: .NET :: unicode sortiranje

[ Pregleda: 1583 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.rs.



+1 Profil

icon unicode sortiranje07.06.2008. u 18:40 - pre 193 meseci
Sitruacija je sledeca:
Pravim sanskritski recnik u C#. Unesene reci ubacujem u List<String>. Listu pokusavam da sortiram, ali ne radi kako treba. Cisto da napomenem da se radi o izuzetno cudnom jeziku, zasnovanom na slogovima koji cine slova. Ja sam mislio da unicode vodi racuna o takvim stvarima i da je dovoljno reci list.Sort() , pa da se svaki jezik izsortira po sopstvenim pravilima. Ocigledno je da sam ziveo u zabludi. BTW, moj "maternji" je C++, mada znam dosta C#a, ali ovakvi problemi nisu bas ono s cime se cesto srecem.

Nasao sam jedno moguce resenje:
Code:
 CompareInfo comp = CompareInfo.GetCompareInfo(0x044F); 

nakon cega pomocu promenljive comp izvrsavam poredjenje dva stringa. Ovo se uopste ne ponasa kako treba (kako sam ja zamislio da treba). Inace, ovaj kod u zagradi (0x44F) je rezervisan za sanskrit, svaki jezik ima svoj kod koji se nalazi na MSDNu.

Ima li neka funkcija koja bi omogucila poredjenje dva unicode stringa da bi se izvrsilo pravilno sortiranje? Bilo kakva ideja, link, smernica su dobrodosli. Hvala unapred.
De si Deda...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: unicode sortiranje07.06.2008. u 21:02 - pre 193 meseci
Unicode sam po sebi nema sortiranje, to je samo tabela mapiranja karaktera i iako za neke kodne rasporede unicode binarni kodovi zadovoljavaju sort za vecinu ne zadovoljava. Sa druge strane, kad uradis list.Sort() ti zapravo sortiras po sort pravilu koje vazi za trenutnu kulturu trenutnog thread-a.

Ovo sto si uradio sa CompareInfo je malo komplikovan nacin za komparaciju, preporuceni nacin je koriscenje StringComparer klase koja implementira IComparer<string> koji ti treba u sort metodi:

Code:

            List<string> lista = new List<string>() { "संस्कृता वाक् ", "संस्कृतम्" };
            StringComparer sc = StringComparer.Create(new CultureInfo("sa"), false);
            lista.Sort(sc);

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.rs.



+1 Profil

icon Re: unicode sortiranje07.06.2008. u 22:05 - pre 193 meseci
Citat:
mmix: Unicode sam po sebi nema sortiranje, to je samo tabela mapiranja karaktera i iako za neke kodne rasporede unicode binarni kodovi zadovoljavaju sort za vecinu ne zadovoljava. Sa druge strane, kad uradis list.Sort() ti zapravo sortiras po sort pravilu koje vazi za trenutnu kulturu trenutnog thread-a.

Ovo sto si uradio sa CompareInfo je malo komplikovan nacin za komparaciju, preporuceni nacin je koriscenje StringComparer klase koja implementira IComparer<string> koji ti treba u sort metodi:

Code:

            List<string> lista = new List<string>() { "संस्कृता वाक् ", "संस्कृतम्" };
            StringComparer sc = StringComparer.Create(new CultureInfo("sa"), false);
            lista.Sort(sc);


Odlicno. Hvala ti na odgovoru.
Video sam i tu funkciju i malo proguglao o njoj, ali nisam u stvari shvatio kako da je upotrebim. Idem da proverim ovo...
De si Deda...
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.rs.



+1 Profil

icon Re: unicode sortiranje07.06.2008. u 22:37 - pre 193 meseci
Evo, proverih i ipak ispada da se string sortira po latinicnoj verziji. Znaci, ignorise se CultureInfo("sa") kao da i ne postoji. Kad ispisem ekvivalent sortiranih reci nekim latinicnim fontom, vidim da je dobro sortiran, problem je sto to nista ne znaci za sanskritsku azbuku koja bi trebalo da ima svoja pravila. Da li mozda masim nesto ocigledno???
De si Deda...
 
Odgovor na temu

DjoleReject
Djordje Knezevic
Zvezdara

Član broj: 85258
Poruke: 309
*.dynamic.sbb.rs.



+1 Profil

icon Re: unicode sortiranje08.06.2008. u 14:19 - pre 193 meseci
Greska je bila moja, jer koristeni font uopste nije bio unicode. Nije mi ni palo na pamet da toliko cest font moze biti ne-unicode, ali eto sta se desava kad covek nije dovoljno skoncentrisan. Hvala mmixu i izvinite ako je tema napravila nepotreban sum.
De si Deda...
 
Odgovor na temu

[es] :: .NET :: unicode sortiranje

[ Pregleda: 1583 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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