pinyin icon indicating copy to clipboard operation
pinyin copied to clipboard

乌拉圭有妖怪,轻声的 ɑ 未被替换为 a

Open yueim opened this issue 6 years ago • 6 comments

// 内存型
$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 的跑,不会出错,差异未知。

yueim avatar Jan 11 '19 17:01 yueim

看 pinyin.php formatTone() line 340 ~ 358

如果有轻声调的 e 存在(抱歉我拼音不太好),可能也会有这个问题。

yueim avatar Jan 11 '19 17:01 yueim

a|ɑ g|ɡ 异体字 罗马字母和哥达体 不知道能统一不

ElephantWhite avatar Jan 15 '19 03:01 ElephantWhite

要看词库文件里面用的什么字母。 理论上拼音转换完了,应该整体扫描一遍,把所有的非ascii字母全部转为对应的ascii字母

yueim avatar Jan 15 '19 09:01 yueim

另有一个建议,如果某个版本修复了某个issue,希望可以在这里给予回报,提交的时候关联上

yueim avatar Jan 15 '19 09:01 yueim

再次感谢 overtrue 同学的这个库

yueim avatar Jan 15 '19 09:01 yueim

另外, 呃呃呃获取到的拼音是ee㐀e 拼音选项: $option = PINYIN_DEFAULT | PINYIN_NAME | PINYIN_UMLAUT_V | PINYIN_KEEP_ENGLISH | PINYIN_KEEP_NUMBER;

yueim avatar Jan 24 '19 05:01 yueim

"呃呃" 居然是一个词!所以三个字”呃呃呃“的时候前两个识别为一个词,然后最后一个处理为单字,所以结果就不对了

https://www.zdic.net/hans/%E5%91%83%E5%91%83

overtrue avatar Apr 27 '23 09:04 overtrue

@cnyyk sorry 现在才来处理这个问题,麻烦再试试新版。

overtrue avatar Apr 27 '23 09:04 overtrue