2013-08-30 15 views
5

Su Linux iconv() traslittera dieresi correttamente per ASCII in base alle impostazioni locali corrente:traslitterare con iconv() su 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 

Tuttavia, su Windows posso solo "a (vale a dire: virgolette doppie, a) indipendentemente dal set di impostazioni internazionali. A quanto pare su Windows i locali sono chiamati "inglese" e "tedesco", ma:

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

buona domanda, mi chiedo se esista un modo per eseguire la traslitterazione per lingua, non genericamente per set di caratteri –

+2

È un bug PHP aperto: https://bugs.php.net/bug.php?id=66278 –

risposta

-1

Ho risolto molti UTF-8 questioni relative utilizzando mb_convert_encoding() e altre mb_ * funzioni invece di iconv.