5

在 Linuxiconv()上,根据当前的语言环境设置将元音变音正确地音译为 ASCII:

$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

但是,在 Windows 上,无论语言环境设置如何,我都只能得到"a(即:双引号 a )。显然在 Windows 上,语言环境被命名为“english”和“german”,但是:

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

1 回答 1

-1

我通过使用 mb_convert_encoding() 和其他 mb_* 函数而不是 iconv 解决了许多 UTF-8 相关问题。

于 2014-01-01T19:08:47.540 回答