Sortera kinesiska tecken i javascript
May 27
För att träna på att skriva plug-in till jQuery komponenten Datatables så har jag gjort en websida: http://sorting.lcube.se/ . Där kan man prova sortera på olika begrepp med min plug-in. Jag tänker förklara hur jag förstått hur kinesiska tecken sorteras samt utveckla hur jag gör och vilka bekymmer som uppstår. Det första problemet jag hade var att jag trodde att 三 (san1) kom efter 二 (Er4). Det här måste vara en bugg var min första reflektion. Men efter att ha sovit på saken så insåg jag att talet 3 三 (san1) har ju radikalen 一 vilket har färre streck än vad teckent för två som har två streck i sin radikal.
Min plugin är idag bara ett fåtal rader i javascript. Tricket för att sortera kinesiska tecken är att använda javascripts localCompare. Det finns dock kända problem med olika webläsare som jag tänkte undersöka och skriva mer om här.
$.fn.dataTableExt.oSort['chinese-string-asc'] = function (s1, s2) { return s1.localeCompare(s2); }; $.fn.dataTableExt.oSort['chinese-string-desc'] = function (s1, s2) { return s2.localeCompare(s1); }; /* Main function*/ function ColorDataTablesInit(tableDivId) { $(tableDivId).dataTable({ "sPaginationType": "full_numbers", "aoColumnDefs": [{ "sType": "chinese-string", "aTargets": [1,2,3,4] }] }); } |