2013-08-30 18 views
5

na Linux iconv() transliterates umlauty prawidłowo na ASCII według bieżącego ustawienia locale:Transliterate z iconv() w systemie Windows

$utf8_umlaut_a = 'ä'; 

setlocale(LC_CTYPE, 'en_US'); 
iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_umlaut_a); // Gives 'a' 

setlocale(LC_CTYPE, 'de_DE'); 
iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_umlaut_a); // Gives 'ae', correct 
                // in German 

Jednak w systemie Windows mogę tylko dostać "a (czyli: cudzysłów, a) niezależnie od ustawień regionalnych. Widocznie na oknach lokalizacje są nazwane „angielski” i „niemiecki”, ale:

setlocale(LC_CTYPE, 'german'); 
iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_umlaut_a); // Still gives '"a' 
+0

Dobre pytanie, zastanawiam się, czy istnieje sposób na wykonanie transliteracji według języka, a nie generalnie przez zestaw znaków –

+2

Jest to otwarty błąd PHP: https://bugs.php.net/bug.php?id=66278 –

Odpowiedz

-1

Mam rozwiązać wiele UTF-8 Powiązany problemy za pomocą mb_convert_encoding() i inne mb_ * zamiast funkcji iconv.