Пожалуйста. Вместо спасиба, блог пост лучше напишите в стиле было так, а стало так и темой "Unicode aware web scrapping in command line perl scripts". Или статью в Pragmatic perl :)
2013/9/6 Nikolay Mishin <[email protected]> > отлично Руслан > 1) если поставить > > https://github.com/mishin/gists/blob/314a55efcf99289b1e18db4f49b2874671c84f9c/gtrans2.pl > use open ':std', OUT => ':encoding(cp1251)'; > выдает (uname -a > Linux ubuntu 3.8.0-29-generic #42-Ubuntu SMP Tue Aug 13 19:40:39 UTC 2013 > x86_64 x86_64 x86_64 GNU/Linux > ) > > $./gtrans2.pl --from en --to ru --text "This is a test" > "\x{00d0}" does not map to cp1251 at ./gtrans2.pl line 62. > "\x{00d1}" does not map to cp1251 at ./gtrans2.pl line 62. > ..на каждый символ > правда пардон я забыл убрать строку > > utf8::encode($translated_string);, если без нее, то (при LANG=ru_RU.UTF-8) > > $./gtrans2.pl --from en --to ru --text "This is a test" > а при > env|grep LANG > LANG=ru_RU.CP1251 > > https://github.com/mishin/gists/blob/c1c3a7b0c59f5d61c36ed7056f67d747c1c3b77d/gtrans2.pl > > ./gtrans2.pl --from en --to ru --text "This is a test" > Это тест > Все супер, значит 1-й вариант работает. ok > > 2) use open ':locale'; > > https://github.com/mishin/gists/commit/984dd22e001e689d7ab4cd20fbbe46bf9a356633#gtrans2.pl > > https://github.com/mishin/gists/blob/984dd22e001e689d7ab4cd20fbbe46bf9a356633/gtrans2.pl > > env|grep LANG > LANG=ru_RU.CP1251 > ./gtrans2.pl --from en --to ru --text "This is a test" > Это тест > > и так работает -ok > оставляем так > > отлично, спасибо за помощь > > p.s. c 20 раза http://perldoc.perl.org/utf8.html начинаешь понимать, что > здесь написано;) > > 06.09.2013, 01:44, "Ruslan Zakirov" <[email protected]>: > > > Нормально `use open` заюзать так: > http://gist.github.com/6456522 > > Но еще более верно: > > use open ':locale'; > > И запускать с нужной локалью: > > LANG="ru_RU.cp1251" gtrans.pl > > Или если не может тулза установить переменную окружения, то: > > gtrans.pl | iconv -t cp1251 > > Если и так не может, то тулзу обернуть в gtrans-cp1251.sh :) > > Или --encoding аргумент добавить, разбор аргументов в BEGIN {}, а потом > use open $encoding? (':std', ":encoding($encoding)") : ':locale'; > > Кошерно :) > > > > 2013/9/5 Nikolay Mishin <[email protected]> > > MoscowPM, добрый день, > > Есть скрипт > перевода гугла из командной строки > https://github.com/mishin/gists/blob/master/gtrans.pl > запускается > > gtrans.pl --from en --to ru --text "This is a test" > > из командной строки > гугл выдает строки в KOI > > я парсю вывод гугла: > > my @matches = > $html =~ > m{onmouseout="this.style.backgroundColor='#fff'">(.*?)</span>}g; > > foreach my $translated_string (@matches) { > my $interm_var = > Convert::Cyrillic::cstocs( 'KOI8', 'UTF8', $translated_string ); > Encode::from_to( $interm_var, 'utf-8', 'cp1251' ); > say $interm_var; > } > > вопрос, можно ли строку > > Convert::Cyrillic::cstocs( 'KOI8', 'UTF8', $translated_string ); > Encode::from_to( $interm_var, 'utf-8', 'cp1251' ); > > заменить одним преобразованием, чтобы на выходе был win1251? > у меня этого не получилось > спасибо > > - > С уважением > Николай Мишин > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > > -- > Best regards, Ruslan. > , > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > -- > С уважением > Николай Мишин > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > -- Best regards, Ruslan.
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
