在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),而不管地区设置如何。显然,在Windows上,语言环境被命名为“英语”和“德语”,但是:
setlocale(LC_CTYPE, 'german');
iconv('UTF-8', 'ASCII//TRANSLIT', $utf8_umlaut_a); // Still gives '"a'发布于 2014-01-01 19:08:47
我已经通过使用mb_convert_encoding()和其他mb_*函数来解决了许多UTF-8相关的问题。
https://stackoverflow.com/questions/18524135
复制相似问题