在Windows上使用iconv()进行音译

在Linux上, iconv()根据当前的语言环境设置将umlauts正确地转换为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 ),而不pipe区域设置。显然,在Windows上,语言环境被命名为”english“和”german“,但是:

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

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