为什么没有透光工作?

时间:2011-02-19 02:13:38

标签: php iconv

setlocale(LC_ALL, 'en_US.UTF8');
$string= 'ṃỹṛèşưḿĕ';
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);

犯了错误......

应该打印:myresume

1 个答案:

答案 0 :(得分:2)

这取决于iconv库。

在Ubuntu 10.10中,我得到了这个:

$ php -i | egrep "iconv (implementation|library)"
iconv implementation => glibc
iconv library version => 2.12.1
$ php a.php 
myresume

但在另一台使用GNU iconv的机器上:

iconv implementation => libiconv
iconv library version => 1.11
# php a.php 
Notice: iconv(): Unknown error (88) in /tmp/root/a.php on line 5

iconv完成的音译在各实现中并不一致。例如,glibc实现将é音译为e,但libiconv将其音译为'e

直到我们在PHP中支持ICU音译器(由于下一版本),才有可靠的方法可靠地进行这些转换(尽管如果你只想删除标记,有other solutions )。在PHP的开发版本中,使用intl扩展,可以这样做:

<?php
$t = Transliterator::create("latin; NFKD; [^\u0000-\u007E] Remove; NFC");
echo $t->transliterate('Ναδάλης ṃỹṛèşưḿĕ');

给出了

Nadales myresume