Использование вашего примера с кодовой страницей 1252 отлично работало на моей машине разработки Windows.
$array=array('Birnen', 'Äpfel', 'Ungetüme', 'Apfel', 'Ungetiere', 'Österreich');
$oldLocal=setlocale(LC_COLLATE, "0");
var_dump(setlocale(LC_COLLATE, 'German_Germany.1252'));
usort($array, 'strcoll');
var_dump(setlocale(LC_COLLATE, $oldLocal));
var_dump($array);
... snip ...
Это было с PHP 5.2.6. Кстати. Вышеприведенный пример неверен, он использует кодировку ASCII вместо UTF-8. Я проследил вызовы strcoll () и посмотрел, что я нашел:
function traceStrColl($a, $b) {
$outValue = strcoll($a, $b);
echo "$a $b $outValue\r\n";
return $outValue;
}
$array=array('Birnen', 'Äpfel', 'Ungetüme', 'Apfel', 'Ungetiere', 'Österreich');
setlocale(LC_COLLATE, 'German_Germany.65001');
usort($array, 'traceStrColl');
print_r($array);
дает:
Ungetüme Äpfel 2147483647 Ungetüme Birnen 2147483647 Ungetüme Apfel 2147483647 Ungetüme Ungetiere 2147483647 Österreich Ungetüme 2147483647 Äpfel Ungetiere 2147483647 Äpfel Birnen 2147483647 Apfel Äpfel 2147483647 Ungetiere Birnen 2147483647
Я нашел некоторые сообщения об ошибках , которые были отмечены как bogus ... Лучшая ставка у вас есть подача отчета об ошибке, я полагаю, хотя ...
Просто уровни видимости набора в свойстве $text.
private $text = "world\n";