gpt4 book ai didi

PHP iconv greek/cyrillic 音译不起作用

转载 作者:可可西里 更新时间:2023-10-31 23:09:13 25 4
gpt4 key购买 nike

我有以下测试代码:

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:

它基本上忽略了所有希腊和西里尔字符。为什么?

我已经在两个环境中进行了测试,其中 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: cannot convert,而 echo 'āēī' | iconv -f utf-8 -t ASCII//TRANSLIT 按预期工作并输出 aei

iconv --version 输出 iconv (GNU libiconv 1.14)(除了版权信息)。

最佳答案

使用ASCII//IGNORE//TRANSLIT

iconv() 在第一个非法字符处停止,在那里切断字符串,这是 iconv() 的默认行为,因此它不遵守 //IGNORE //TRANSLIT

之后切换

关于PHP iconv greek/cyrillic 音译不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com