setlocale(LC_ALL, 'en_US.UTF8');
$string= 'ṃỹṛèşưḿĕ';
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);
出错了...
应该打印:myresume
最佳答案
它取决于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)。在具有intl扩展名的PHP开发版本中,可以执行以下操作:
<?php
$t = Transliterator::create("latin; NFKD; [^\u0000-\u007E] Remove; NFC");
echo $t->transliterate('Ναδάλης ṃỹṛèşưḿĕ');
这使
Nadales myresume
关于php - 为什么不转换工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5048401/