Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Транслитерация |
Автор: AlexanderI 6.6.2014, 13:10 | ||||
Здравствуйте. Есть файл XML (utf8). Нужные значения из него я получаю через XML::Simple функция XMLin(). Русские слова (кирилица) получаются вот такие \x{420}\x{43e}\x{434}\x{438}\x{442}\x{435}\x{43b}\x{44c} Мне нужно сделать транслитерацию этого слова (\x{41e}\x{442}\x{447}\x{435}\x{442}). Функция через которую я делаю транслитерацию выводит каракули. _kir2tr('переменная'); Пробывал добавлять
тоже самое, только другие каракули. Добавлял use utf8; тоже самое.
|
Автор: arto 6.6.2014, 13:16 |
# perl -MLingua::Translit -CSA -le '$a = "\x{420}\x{43e}\x{434}\x{438}\x{442}\x{435}\x{43b}\x{44c}"; print $a; print Lingua::Translit->new("GOST 7.79 RUS")->translit($a)' Родитель Roditel` # |
Автор: AlexanderI 6.6.2014, 15:09 |
Немогу установить модуль Lingua::Translit. Есть ли ещё какой-нибудь способ ? |
Автор: arto 6.6.2014, 16:09 |
# perl -Mcharnames=:full -CS -le '%a = ("\N{CYRILLIC SMALL LETTER ER}" => "r", "\N{CYRILLIC SMALL LETTER O}" => "o", "\N{CYRILLIC SMALL LETTER DE}" => "d", "\N{CYRILLIC SMALL LETTER I}" => "i", "\N{CYRILLIC SMALL LETTER TE}" => t, "\N{CYRILLIC SMALL LETTER E}" => "e", "\N{CYRILLIC SMALL LETTER EL}" => "l", "\N{CYRILLIC SMALL LETTER SOFT SIGN}" => "x"); $a = "\x{440}\x{43e}\x{434}\x{438}\x{442}\x{435}\x{43b}\x{44c}"; print $a; print $a =~ s#.#$a{$&}||$&#gsmer' родитель roditеlx # |