UTF-8 datu sortēšanas problēma ar JavaScript Jānis Rubļevskis (koko) / 09.09.2011. 09:04 / #Datori / 2 komentāri

Vakar saskāros ar visai nepatīkamu problēmu - javaskripts pats izdomā, kā defaultā sortēt utf-īgus datus. Piemēram, man sanāca tā:

Ānis, Anis, Krāns
sakārtojas secībā:
Anis, Krāns, Ānis
Pa lielam ierobežotā laika dēļ problēmu neatrisināju pilnībā, bet ir daļējs risinājums. Tā vietā, lai izmantotu return (a < b); paņēmienu, ķēros pie return a.localeCompare(b); variantu.

Rezultāts sekojošs:

1) Pirmkārt, strādās ar esošajiem lietotāja sistēmas valodas iestatījumiem. Respektīvi, ja būs iesetota krievu valoda, tad kārtos pa savam, ja būs iesetota latviešu valoda, tad kārtos pa savam.
2) Pie pareiziem valodas iestatījumiem sistēmā Firefox un Ēzelītis rādīs pareizi, bet webkitīgie browseri (Chrome[ium], Safari) var parādīt arī nepareizi (runa konkrētajā gadījumā ir tieši par latviešu valodu). Tas esot tāpēc, ka JavaScript specifikācijā šis process neesot viennozīmīgi un nepārprotami aprakstīts.

Izskatās, ka vislabākais variants tomēr uz šo brīdi ir kārtot datus servera pusē. Zec saks ēss, bet neko nevar padarīt.

Otrs variants būtu izmantot javaskriptīgu usort metodi, bet jārēķinās, ka visu kārtošanas mehānismu jāievada ar rociņu un šis variants nebūs pats ātrākais.

P.S. Ja kāds kaut ko nesaprata, tad raksts nav domāts jums, bet gan gīkainajām cipargalvām :)


Komentāri:

koko @ 19.09.2011. 04:40

Aha... Šitas ir līdzīgs tam usort variantam, bet no programmēšanas viedokļa laikam sanāk elementārāks. Paldies!

Krišs @ 16.09.2011. 11:49

Šito risinājumu skatījies? stackoverflow.com/questions/

Lēnāks jau būs, bet vismaz vari norādīt pats savu alfabētu.


Nu pasāpini mani - tu jau gribi:

* Visi lauki (izņemot tavu lapu) aizpildāmi obligāti!
E-pasts publiski netiks parādīts.
Zinot vairākumu, komentāros tagi netiek atrādīti kā tagi. Linki automātiski pārveidosies par spiežamiem (cerams).
Bloga īpašnieks patur tiesības ļaunus komentārus dzēst vai pārveidot cilvēkiem patīkamākā formā, bet tajā pašā laikā neatbild par komentāru saturu.