- Преобразование уникода,
михалыч, 05:06 , 19-Фев-17 (1)> Подскажите пжста, как на перл перекодировать в читаемый вид уникод-строку типа \u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439 #!/usr/bin/perluse Encode; $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; print Encode::from_to($text,'utf8','koi8r'); 60
- Преобразование уникода,
abut, 10:56 , 19-Фев-17 (2)>> Подскажите пжста, как на перл перекодировать в читаемый вид уникод-строку типа \u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439 > #!/usr/bin/perl > use Encode; > $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; > print Encode::from_to($text,'utf8','koi8r');60 сорри, я наверно как то сформулировал не так. Нужно получить в той же кодировке (utf8), но в читабельном виде, в строке на самом деле слово "Люберецкий", а ваш скрипт выдает видимо количество символов в строке :).
- Преобразование уникода,
PavelR, 11:01 , 19-Фев-17 (3) Чтобы вывести текст надо вывести измененное содержимое переменной $text.print $text;
- Преобразование уникода,
Andrey Mitrofanov, 11:52 , 19-Фев-17 (4)> #!/usr/bin/perl > use Encode; > $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; > Encode::from_to($text,'utf8','koi8r'); > print $text; И это опять не подойдёт Заказчику? echo '\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439' |SOME_SECRET_COMMAND ; echo Люберецкий $ _ --- sed '/g ; s/, //'|recode u2/x2..
- Преобразование уникода,
PavelR, 11:53 , 19-Фев-17 (5)Да, чего-то не подходит. )
- Преобразование уникода,
Andrey Mitrofanov, 11:54 , 19-Фев-17 (6) +1 > Люберецкий > $ _ > --- sed '/g ; s/, //'|recode u2/x2..--агхр sed 's/\\u/, 0x/g ; s/, //'|recode u2/x2..
- Преобразование уникода,
abut, 12:10 , 19-Фев-17 (8) –1 >> Люберецкий >> $ _ >> --- sed '/g ; s/, //'|recode u2/x2.. > --агхр sed 's/\\u/, 0x/g ; s/, //'|recode u2/x2..да хотелось бы именно на перл и без вызова внешних программ. На питоне в 2 строчки делается, а на перле чет не могу найти работающего решения(
- Преобразование уникода,
abut, 15:22 , 22-Фев-17 (11)>> Люберецкий >> $ _ >> --- sed '/g ; s/, //'|recode u2/x2.. > --агхр sed 's/\\u/, 0x/g ; s/, //'|recode u2/x2..Спасибо, пришлось все же воспользоваться Вашим решением, единственно что для recode добавил флаг f, иначе ошибка "recode: Ambiguous output in step `Hexadecimal-2..data" # echo '\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439' | sed 's/\\u/, 0x/g ; s/, //' | recode -f u2/x2 ; echo Люберецкий
- Преобразование уникода,
Andrey Mitrofanov, 16:35 , 22-Фев-17 (12)>>> --- sed '/g ; s/, //'|recode u2/x2.. >> --агхр sed 's/\\u/, 0x/g ; s/, //'|recode u2/x2.. > Спасибо, пришлось все же воспользоваться Вашим решением, |-D "Ещё долго седые опенетовцы рассказывли детям предания, как Митрофанов заборол перлы-питоны-повершелы одним ядрёным баш-сед-фу." > единственно что для recode добавил флаг f, иначе ошибка "recode: Ambiguous output
- Преобразование уникода,
михалыч, 11:57 , 19-Фев-17 (7)> Чтобы вывести текст надо вывести измененное содержимое переменной $text. > print $text; да конечно! посыпаю голову пеплом ))
- Преобразование уникода,
михалыч, 20:52 , 19-Фев-17 (9)>>> Подскажите пжста, как на перл перекодировать в читаемый вид уникод-строку типа \u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439 >> #!/usr/bin/perl >> use Encode; >> $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; >> print Encode::from_to($text,'utf8','koi8r');60 > сорри, я наверно как то сформулировал не так. > Нужно получить в той же кодировке (utf8), но в читабельном виде, > в строке на самом деле слово "Люберецкий", а ваш скрипт выдает > видимо количество символов в строке :).виноват, исправляюсь ))#!/usr/bin/perluse Text::Iconv; $text = '\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; print Text::Iconv->new("java", "koi8-r")->convert($text); у вас какой-то юникод неправильный (смс-ки вроде как в ucs-2be или это не для рассылок смс?)
- Преобразование уникода,
abut, 15:19 , 22-Фев-17 (10)> виноват, исправляюсь ))#!/usr/bin/perl > use Text::Iconv; > $text = '\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; > print Text::Iconv->new("java", "koi8-r")->convert($text); > у вас какой-то юникод неправильный (смс-ки вроде как в ucs-2be или это > не для рассылок смс?) не могу проверить, на хостинге модуль Text::Iconv отсутствует, но похоже что это тоже не то. не для рассылок смс, это из инстаграма
- Преобразование уникода,
михалыч, 20:16 , 22-Фев-17 (13)сам iconv есть? тогда#!/usr/bin/perl$text = '\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; $text = `iconv -f java -t koi8-r << EOD $text`; print $text; а на хостинге по просьбе трудящихся ничего дополнительно не установят? попросите их вежливо ))
- Преобразование уникода,
abut, 20:45 , 22-Фев-17 (14)> сам iconv есть? тогда#!/usr/bin/perl > $text = '\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; > $text = `iconv -f java -t koi8-r << EOD > $text`; > print $text; > а на хостинге по просьбе трудящихся ничего дополнительно не установят? > попросите их вежливо )) ------------8<-------------------------------------- sh: line 1: warning: here-document at line 0 delimited by end-of-file (wanted `EOD') iconv: conversion from `java' is not supported Try `iconv --help' or `iconv --usage' for more information. ----------->8--------------------------------------- Спасибо, я уже решил проблему вызовом из перла sed+recode с помощью совета выше.
- Преобразование уникода,
ACCA, 22:02 , 01-Мрт-17 (15) +1 > Спасибо, я уже решил проблему вызовом из перла sed+recode с помощью совета > выше.Не нужно вызывать sed+recode из Perl, это извращение в три процесса на строку. my $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; $text =~ s/\\u(....)/chr hex $1/ge;
- Преобразование уникода,
михалыч, 09:58 , 06-Мрт-17 (16)> my $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; > $text =~ s/\\u(....)/chr hex $1/ge; класс! это здо́рово! спасибо за пример использования chr и hex тем самым получаем текст в utf8 если необходимо, то переводим полученный текст в нужную кодировку например вот так в koi8-r (не-не, я только перекодирование добавлю, петь и плясать не буду ☺ )
#!/usr/bin/perluse Encode qw(encode decode); $text='\u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439'; $text =~ s/\\u(....)/chr hex $1/ge; $text = Encode::encode('koi8-r', $text); print $text; на пальму первенства не претендую ))
- Преобразование уникода,
Аноним, 21:37 , 11-Июл-18 (17)> Подскажите пжста, как на перл перекодировать в читаемый вид уникод-строку типа \u041b\u044e\u0431\u0435\u0440\u0435\u0446\u043a\u0438\u0439 s/\\u(....)/ pack 'U*', hex($1) /eg;
|