加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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开关

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读