Существует ли транслитерация из UTF-8 в CP1251, когда один символ заменяется несколькими символами?

Я использую функцию iconv с опцией translit.

Существует ли транслитерация из UTF-8 в CP1251, когда один символ заменяется несколькими символами?
Где я могу найти эту информацию? Я использую iconv.

1

Решение

Есть несколько, в зависимости от реализации и локали:

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

Это, соответственно, U + 2100 СЧЕТ транслитерировать как a/c, U + 21D2 ПРАВА ДВОЙНОЙ СТРЕЛЫ транслитерировать как =>, U + 00BDВУЛГАРНАЯ ФРАКЦИЯ ОДНА ПОЛОВИНА транслитерировать как 1/2 (включая пробелы).

Я нашел их в исходном коде GNU libc, https://github.com/lattera/glibc/blob/master/locale/C-translit.h.in; различные реализации могут не транслитерировать эти символы одинаково, если вообще.

3

Другие решения

Самый очевидный

$ 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 вместо).

0

По вопросам рекламы [email protected]