отлично Руслан
1) если поставить
https://github.com/mishin/gists/blob/314a55efcf99289b1e18db4f49b2874671c84f9c/gtrans2.pl
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
)
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.
"\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
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';
env|grep LANG
LANG=ru_RU.CP1251
./gtrans2.pl --from en --to ru --text "This is a test"
Это тест
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, добрый день,Есть скриптперевода гугла из командной строкизапускается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
