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

エラーが発生します...

印刷する必要があります:myresume

4

1 に答える 1

3

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トランスリテラッターがサポートされるまで(次のバージョンのため)、これらの変換を確実に実行するための現実的な方法はありません(ただし、マークを削除するだけの場合は、他の解決策があります)。PHPの開発バージョンでは、intl拡張子を使用して、これを行うことができます。

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

これは

Nadales myresume
于 2011-02-19T04:55:48.867 に答える