私は、次のテストコードを持っている:PHPのiconvギリシャ/キリル音訳は動作しません
setlocale(LC_ALL, 'en_US.UTF8');
function t($text)
{
echo "$text\n";
echo "encoding: ", mb_detect_encoding($text), "\n";
// transliterate
$text = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $text);
echo "iconv: ", $text, "\n";
}
// Latvian alphabet
t('AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ aābcčdeēfgģhiījkķlļmnņoprsštuūvzž');
// Greek alphabet
t('ΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΜμΝνΞξΟοΠπΡρΣσςΤτΥυΦφΧχΨψΩω');
// Cyrillic alphabet + some rarer versions
t('АБВГДЕЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪꙐЬѢꙖѤЮѦѪѨѬѮѰѲѴ абвгдеёжзийклмнопрстуфхцчшщъыьэюя');
、その出力:それは基本的にすべてのギリシャ語とキリル文字を無視
AĀBCČDEĒFGĢHIĪJKĶLĻMNŅOPRSŠTUŪVZŽ aābcčdeēfgģhiījkķlļmnņoprsštuūvzž
encoding: UTF-8
iconv: AABCCDEEFGGHIIJKKLLMNNOPRSSTUUVZZ aabccdeefgghiijkkllmnnoprsstuuvzz
ΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΜμΝνΞξΟοΠπΡρΣσςΤτΥυΦφΧχΨψΩω
encoding: UTF-8
iconv:
АБВГДЕЖЅЗИІКЛМНОПҀРСТѸФХѠЦЧШЩЪꙐЬѢꙖѤЮѦѪѨѬѮѰѲѴ абвгдеёжзийклмнопрстуфхцчшщъыьэюя
encoding: UTF-8
iconv:
。どうして?
私は2つの環境でテストしている場合php -i | egrep "iconv (implementation|library)"
出力のいずれか:
iconv implementation => libiconv
iconv library version => 1.11
または:
iconv implementation => libiconv
iconv library version => 1.13
iもsetlocale
を除去/添加、UTF-8に内部エンコーディングをivonv設定しようとしていますしかし、すべて役に立たない。 iconvはlatinとlatin-from-latin文字のみを認識しているようです。
UPDATE:echo 'āēī' | iconv -f utf-8 -t ASCII//TRANSLIT
作品出力aei
ながら予想通り端末コマンドecho 'ΑαΒβΓγΔδ' | iconv -f utf-8 -t ASCII//TRANSLIT
は、エラーiconv: (stdin):1:0: cannot convert
を生成するように、それはiconvのに問題がなければなりません。
iconv --version
出力iconv (GNU libiconv 1.14)
(著作権情報の他に)。
後
//IGNORE
スイッチを尊重しませんでしたテストしましたが、成功しませんでした – dynamic@ yes123どのようにあなたが試したかわかりません。しかし、それは最初のケースのために働く。 PHPのマニュアルを読んで、それがうまくいくかどうか分かります。 – Rifat
最初のケースはもちろん動作しますが、2番目と3番目は何も変わりません。 – dynamic