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'
Dobre pytanie, zastanawiam się, czy istnieje sposób na wykonanie transliteracji według języka, a nie generalnie przez zestaw znaków –
Jest to otwarty błąd PHP: https://bugs.php.net/bug.php?id=66278 –