MoscowPM, добрый день,
написал скрипт, который в командной строке переводит используя google.com и translate.ru
(предварительно нужно, чтобы был запущен Firefox c активированным MozRepl и одна из вкладок была http://www.translate.ru/ )
в ubuntu все работает отлично (perl 5.14)
./g_and_p_trans.pl --from en --to ru --text "It is awesome"
google say:Это потрясающее
prompt say:Это удивительное
prompt say:Это удивительное
в Win Xp perl 5.14.2 perl -V (https://github.com/mishin/gists/blob/master/win_verion)
при запуске через батник utf.cmd (https://github.com/mishin/gists/blob/master/utf.cmd)
cmd /u /c call g_and_p_trans.pl --from en --to ru --text "It is awesome" > out 2>&1
в out следующие строки
Wide character in say at C:\Documents and Settings\rdtex1\ͮ桤itHub\last_gists\g_and_p_trans.pl line 62.
google say:
Это потрясающее
translate.ru say:
Это удивительное
utf в cmd
http://anvarichn.livejournal.com/43752.html
1) Внимание вопрос, судя по форумам и кляузы "Cannot figure out an encoding to use at "
прагма
use open ':locale';
под виндоуз сломана, как бы ее починить?
2) Можно, конечно не обращать внимание на ошибки, тогда utf.cmd будет таким
cmd /u /c call g_and_p_trans.pl --from en --to ru --text "It is awesome" > out
но опыт подсказывает, что если на них не обращать внимание, то потом можно не обнаружить и других ошибок,
которые могут возникать при доработке
другие, альтернативные способы с использованием
use Encode;
use Convert::Cyrillic;
use Convert::Cyrillic;
my $interm_var =Convert::Cyrillic::cstocs( 'KOI8', 'UTF8', $translated_string );
Encode::from_to( $interm_var, 'utf-8', 'cp1251' );
utf8::encode($translated_string);
Encode::from_to( $interm_var, 'utf-8', 'cp1251' );
utf8::encode($translated_string);
еще хуже, они работаю только с выводом от google,
но когда идет еще выбор из firefox, то такие штучки не помогают, а только все запутывают
я все, спасибо, может будут какие идеи?
--
С уважением
Николай Мишин
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
