The Web Design Group

... Making the Web accessible to all.

Welcome Guest ( Log In | Register )

> Incorrect sorting of the Scandinavian alphabets
Christian J
post Oct 23 2006, 06:11 PM
Post #1


.
********

Group: WDG Moderators
Posts: 9,630
Joined: 10-August 06
Member No.: 7



Not only PHP sorts the Swedish letters å, ä and ö incorrectly, now I noticed that javascript does the same, and also in Danish and Norwegian. The arrays below should be in the correct order for each language:

CODE
window.onload=function()
{    
    var se=['å','ä','ö']; // Swedish
    var dk=['æ','ø','å']; // Danish, apparently same as Norwegian
    
    alert(se.sort());
    alert(dk.sort());    
}


Note that Danish and Norwegian use a different order than Swedish. But in the sorted javascript alerts the Swedish letters are incorrectly sorted as "ä,å,ö", while Danish and Norwegian are (again incorrectly) sorted as "å,æ,ø". The same error appear in IE, Opera and Firefox. At least Opera's Norwegian creators should know their own alphabet, so am I correct in assuming that all three browser vendors deliberately follow some flawed convention?
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
 
Reply to this topicStart new topic
Replies
Darin McGrew
post Oct 23 2006, 06:55 PM
Post #2


WDG Member
********

Group: Root Admin
Posts: 8,365
Joined: 4-August 06
From: Mountain View, CA
Member No.: 3



Does PHP allow you to specify the locale? The default locale is often "C", which sorts characters according to their numeric encoding. Other locales should sort characters as appropriate for that locale.
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
Christian J
post Oct 24 2006, 05:48 AM
Post #3


.
********

Group: WDG Moderators
Posts: 9,630
Joined: 10-August 06
Member No.: 7



QUOTE(Darin McGrew @ Oct 24 2006, 01:55 AM) *

Does PHP allow you to specify the locale?

It does, but it seems to be buggy. The entry on http://bugs.php.net/bug.php?id=9671 (10 Mar 2001 1:36pm) suggests something like this, which still sorts in the wrong order (PHP 4.3.3):

CODE
<?php
// Danish letters
$dk = array('ø', 'æ', 'å');
setlocale(LC_COLLATE, "dk_DK");
usort($dk, "strcoll");
print_r($dk); // returns "Array ( [0] => å [1] => æ [2] => ø )"

echo '<br>';

// Norwegian letters
$no = array('ø', 'æ', 'å');
setlocale(LC_COLLATE, "no_NO");
usort($no, "strcoll");
print_r($no); // returns "Array ( [0] => å [1] => æ [2] => ø )"

echo '<br>';

// Swedish letters
$se = array('å', 'ä', 'ö');
setlocale(LC_COLLATE, "sv_SV");
usort($se, "strcoll");
print_r($se); // returns "Array ( [0] => ä [1] => å [2] => ö )"
?>
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post
Liam Quinn
post Oct 24 2006, 07:48 PM
Post #4


WDG Founder
***

Group: Root Admin
Posts: 52
Joined: 2-August 06
From: Canada
Member No.: 1



QUOTE(Christian J @ Oct 24 2006, 06:48 AM) *

QUOTE(Darin McGrew @ Oct 24 2006, 01:55 AM) *

Does PHP allow you to specify the locale?

It does, but it seems to be buggy. The entry on http://bugs.php.net/bug.php?id=9671 (10 Mar 2001 1:36pm) suggests something like this, which still sorts in the wrong order (PHP 4.3.3):

CODE
<?php
// Danish letters
$dk = array('ø', 'æ', 'å');
setlocale(LC_COLLATE, "dk_DK");
usort($dk, "strcoll");
print_r($dk); // returns "Array ( [0] => å [1] => æ [2] => ø )"

echo '<br>';

// Norwegian letters
$no = array('ø', 'æ', 'å');
setlocale(LC_COLLATE, "no_NO");
usort($no, "strcoll");
print_r($no); // returns "Array ( [0] => å [1] => æ [2] => ø )"

echo '<br>';

// Swedish letters
$se = array('å', 'ä', 'ö');
setlocale(LC_COLLATE, "sv_SV");
usort($se, "strcoll");
print_r($se); // returns "Array ( [0] => ä [1] => å [2] => ö )"
?>



The user comments in http://ca3.php.net/setlocale may help you determine whether your system has the locales installed. One problem is that you have the Danish and Swedish locale codes wrong: They should be "da_DK" and "sv_SE" (language_COUNTRY).
User is offlinePM
Go to the top of the page
Toggle Multi-post QuotingQuote Post

Posts in this topic


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



- Lo-Fi Version Time is now: 28th March 2024 - 05:31 PM