PHP iconv希腊语/西里尔语音译不起作用

发布时间:2020-08-01 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了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:

它基本上是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开关

总结

以上是脚本之家为你收集整理的PHP iconv希腊语/西里尔语音译不起作用全部内容,希望文章能够帮你解决PHP iconv希腊语/西里尔语音译不起作用所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478
脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!