当一个符号替换几个符号时,是否存在从UTF-8到CP1251的音译?

Is there transliteration from UTF-8 to CP1251 when one symbol substitutes with several symbols?

本文关键字:符号 UTF-8 CP1251 存在 替换 一个 几个 是否      更新时间:2023-10-16

我使用的是带有转译选项的iconv函数

当一个符号代替几个符号时,是否存在从UTF-8到CP1251的音译?我可以在哪里搜索到这些信息?我使用iconv

有一些,取决于实现和语言环境:

$ echo '℀⇒½' | iconv -f UTF8 -t CP1251//TRANSLIT
a/c=> 1/2 

分别为U+2100ACCOUNT OF音译为a/cU+21D2右双箭头音译为=>U+00BDVULGAR FRACTION ONE HALF音译为1/2(包括空格)。

我在GNU libc源代码中找到了这些,https://github.com/lattera/glibc/blob/master/locale/C-translit.h.in;不同的实现可能不会以相同的方式音译这些字符。

最明显的是

$ echo 'ß' | iconv -f UTF-8 -t CP1251//TRANSLIT
ss

此外,如果您的语言环境是德语,则根据德语规则对元音字母进行音译(是的,音译与语言环境有关)。

$ export LC_ALL=de_DE.UTF-8
$ echo 'Füße' | iconv -f utf-8 -t CP1251//TRANSLIT
Fuesse

(有些版本会打印F"usse)