乌拉圭有妖怪,轻声的 ɑ 未被替换为 a
// 内存型
$pinyin = new Pinyin('Overtrue\Pinyin\MemoryFileDictLoader');
$str = $pinyin->permalink('乌拉', '');
var_dump($str === 'wula');
$str = $pinyin->permalink('拉圭', '');
var_dump($str === 'lagui');
$str = $pinyin->permalink('乌圭', '');
var_dump($str === 'wugui');
$str = $pinyin->permalink('乌拉圭', '');
var_dump($str === 'wulagui');
var_dump(strlen($str));
var_dump(mb_strlen($str));
var_dump($str);
输出
boolean true
boolean true
boolean true
boolean false
int 7
int 8
string 'wul�gui'
瞄了代码,
data/words_0 line 6420
'乌拉圭' => ' wù lɑ guī',
转换后拼音
wù lɑ guī
貌似走到
pinyin.php formatTone() line 340 ~ 358
只转换了 ā á ǎ à,忽略了轻声的 ɑ
盼处理。
之所以遇到这个问题是因为在 macos 通过 brew 安装的 httpd 和 php 下,乌拉圭转成拼音出现乱码导致数据库写入失败
General error: 1366 Incorrect string value: '\xE9\x91gui'
而同一套代码,用 mamp pro 的跑,不会出错,差异未知。
看 pinyin.php formatTone() line 340 ~ 358
如果有轻声调的 e 存在(抱歉我拼音不太好),可能也会有这个问题。
a|ɑ g|ɡ 异体字 罗马字母和哥达体 不知道能统一不
要看词库文件里面用的什么字母。 理论上拼音转换完了,应该整体扫描一遍,把所有的非ascii字母全部转为对应的ascii字母
另有一个建议,如果某个版本修复了某个issue,希望可以在这里给予回报,提交的时候关联上
再次感谢 overtrue 同学的这个库
另外,
呃呃呃获取到的拼音是ee㐀e
拼音选项:
$option = PINYIN_DEFAULT | PINYIN_NAME | PINYIN_UMLAUT_V | PINYIN_KEEP_ENGLISH | PINYIN_KEEP_NUMBER;
"呃呃" 居然是一个词!所以三个字”呃呃呃“的时候前两个识别为一个词,然后最后一个处理为单字,所以结果就不对了
https://www.zdic.net/hans/%E5%91%83%E5%91%83
@cnyyk sorry 现在才来处理这个问题,麻烦再试试新版。