为什么翻译不起作用?

dyn*_*mic 5 php iconv

setlocale(LC_ALL, 'en_US.UTF8');
$string= '???è????';
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string);
Run Code Online (Sandbox Code Playgroud)

出错...

应该打印:myresume

Art*_*cto 3

这取决于 iconv 库。

\n\n

在 Ubuntu 10.10 中,我得到这个:

\n\n
$ php -i | egrep "iconv (implementation|library)"\niconv implementation => glibc\niconv library version => 2.12.1\n$ php a.php \nmyresume\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
iconv implementation => libiconv\niconv library version => 1.11\n# php a.php \nNotice: iconv(): Unknown error (88) in /tmp/root/a.php on line 5\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

在我们在 PHP 中支持 ICU 音译器(下一个版本)之前,不会有可靠的方法来可靠地进行这些转换(尽管如果您只想删除标记,还有其他解决方案)。在 PHP 的开发版本中,使用 intl 扩展,可以执行以下操作:

\n\n
<?php\n$t = Transliterator::create("latin; NFKD; [^\\u0000-\\u007E] Remove; NFC");\necho $t->transliterate(\'\xce\x9d\xce\xb1\xce\xb4\xce\xac\xce\xbb\xce\xb7\xcf\x82 \xe1\xb9\x83\xe1\xbb\xb9\xe1\xb9\x9b\xc3\xa8\xc5\x9f\xc6\xb0\xe1\xb8\xbf\xc4\x95\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

这使

\n\n
Nadales myresume\n
Run Code Online (Sandbox Code Playgroud)\n