PHP iconv希腊语/西里尔语音译不起作用
发布时间:2020-12-13 17:09:56 所属栏目:PHP教程 来源:网络整理
导读:我有以下测试代码: setlocale(LC_ALL,'en_US.UTF8');function t($text){ echo "$textn"; echo "encoding: ",mb_detect_encoding($text),"n"; // transliterate $text = iconv('UTF-8','ASCII//TRANSLIT//IGNORE',$text); echo "iconv: ",$text,"n";}// L
我有以下测试代码:
setlocale(LC_ALL,'en_US.UTF8'); function t($text) { echo "$textn"; 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: 它基本上是IGNOREs所有的希腊和西里尔字符.为什么? 我已经测试了两个环境,其中php -i | egrep“iconv(implementation | library)”输出: iconv implementation => libiconv iconv library version => 1.11 要么: iconv implementation => libiconv iconv library version => 1.13 我也试过将ivonv内部编码设置为UTF-8,添加/删除setlocale函数,但都无济于事. iconv似乎只识别拉丁文和拉丁文字符. 更新:iconv作为终端命令echo’ΑαΒβΓγΔδ’|必须是一个问题iconv -f utf-8 -t ASCII // TRANSLIT产生错误iconv:(stdin):1:0:无法转换,而echo’āēī’| iconv -f utf-8 -t ASCII // TRANSLIT按预期工作并输出aei. iconv –version输出iconv(GNU libiconv 1.14)(除版权信息外). 解决方法
使用ASCII // IGNORE // TRANSLIT
iconv()停在第一个非法字符处,在那里切断字符串,这是iconv()的默认行为,所以在// TRANSLIT之后它不尊重// IGNORE开关 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |