[Moscow.pm] LWP - сделать пост запрос с данными в кои8 из скрипта с utf

Nick Knutov mail на knutov.com
Сб Июн 18 14:27:46 PDT 2011


Решние таки придумалось:

# from html form on the utf8 page
# $fields->{some_param} = $IN{some_param};

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
foreach my $k (%{$fields}) {
	utf8::decode($fields->{$k}); ### Here is the magic
}
my $response = $ua->post($url,$fields);
my $r = $response->content();

Однако как-то это неправильно, сначала делать декодирование, чтобы потом 
сделать кодирование, чтобы на выходе таки получить bytes, которые были 
сразу. Как это решается правильно? И почему вообще LWP считает, что у 
меня где-то юникодные строчки, если у них нет флага utf8?

19.06.2011 2:12, Nick Knutov пишет:
> Подтолкните пожалуйста в правильном направлении -
> Dancer, скрипт, везде UTF8, включая use utf8.
>
> Надо к одному внешнему апи сделать POST запрос с данными в koi8.
> Данные приходят с формы в utf8. Я их конверчу через encode, убедился,
> что флага utf8 там больше нет. И всё бы прекрасно, но судя по доступному
> дебагу от удалённого апи запросы к нему приходят дважды кодированные,
> как буд-то LWP думает, что все поля пост запроса у меня в utf. Я
> сохраняю дампы данных непосредственно перед $ua->request(POST $url,
> $fields);, т.е. я абсолютно уверен, что не сам делаю двойное
> кодирование. Воткнуть no utf8 в блок вокруг LWP не помогло. Гугл тоже не
> помогает. В какую сторону смотреть?
>
> ps: в очень старой версии этого же скрипта, где входные данные в cp1251
> и точно так же этим же самым кодом конвертятся в koi8, всё доходит до
> чужого апи как надо и апи дает ожидаемые ответы, вместо ошибок.
>

-- 
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130


Подробная информация о списке рассылки Moscow-pm