ugrás a tartalomhoz

magyar rendezés

T.G · 2005. Ápr. 27. (Sze), 17.36
Egy sokszor lerágott témát szeretnék elővenni, de többszöri utánakeresésre sem találtam meg a megoldást...

Adott a jó öreg sort függvény, ékezetes karaktereket is tartalmazó tömbbel:

<?php
setlocale(LC_ALL, 'hu_HU');
$my_array = array('b', 'á', 'a', 'c');
sort($my_array);
print_r($my_array);
Az eredmény sajnos:
Array (
  [0] => a
  [1] => b
  [2] => c
  [3] => á
)

Ezután felmerült, hogy talán a magyar környezettel van probléma, de a két gyorsteszt ennek ellentmondott:
turig:~$ locale -a | grep hu
hu_HU
hu_HU.iso88592
hu_HU.utf8
hungarian
lithuanian

illetve:

<?php
setlocale(LC_ALL, 'hu_HU');
echo strftime('%A', time());
Az eredmény persze:
szerda

Az az öltet sem segített, hogy talán egy másik nyelvi beállítással próbálkozzak.

<?php
$my_array = array('b', 'á', 'a', 'c');
foreach(array('hu_HU', 'hu_HU.iso88592', 'hu_HU.utf8', 'hungarian') as $i) {
    setlocale(LC_ALL, $i);
    sort($my_array);
    print_r($my_array);
}
az eredmény négyszer ugyanaz a hibás sorrend.

Hosszú bénázás után találtam arra vonatkozó utalást, hogy a hu_HU definíciós fájlt nem magyarok írták, így az ábc-vel vannak gondok. A megoldást tartalmazó oldal sajnálatomra már nem él.

Ekkor felmerült, hogy talán a kedvenc Linuxomban nem jó a magyar rendezés???

turig:~$ echo -e "b\ná\na\nc" | sort
a
á
b
c

Jobban meglepődtem volna, ha nem a helyesen eredményt kapom, de a fenti probléma megoldásához persze egy lépéssel sem kerültem közelebb...

Ötlet???
 
1

Csak olyan fapados

halee · 2005. Május. 2. (H), 15.48
Csak olyan fapados megoldást tudnék rá, hogy inkább le sem írom...
talán legjobb, ha írsz egy my_sort()-ot... :(