This is probably not be a perl issue as I did not have the same
version of URI and libwww-perl installed where I tested.  What version
of URI and libwww-perl did you use?  I now think that you'll see the
first behaviour with URI <= 1.35 and the later if URI is more recent.

--Gisle

On Fri, Sep 19, 2008 at 2:14 PM, Gisle Aas <[EMAIL PROTECTED]> wrote:
> I wonder if this is a bug in perl itself.  With perl-5.8.8 I get:
>
>    count=123&works=%E2%98%BA&does_not_work=&foo=bar
>
> as you showed, but with perl-5.8.9(tobe) and perl-5.10.0 I get:
>
>    count=123&works=%C3%A2%C2%98%C2%BA&does_not_work=%E2%98%BA&foo=bar
>
> so now it's the 'works' case that does_not_work but in a different way :(
>
> --Gisle
>
>
> On Fri, Sep 19, 2008 at 7:54 AM, Bill Moseley <[EMAIL PROTECTED]> wrote:
>> I have a form that posts to a service, and noticed not all
>> parameters were being posted.
>>
>> I realized my mistake of not encoding to utf8, but I'm curious why
>> this did not generate any warnings.
>>
>> I can imagine others getting caught by this, so a warning would be very
>> helpful.
>>
>> Not really sure where it should be checked -- in query_form when
>> processing the individual parameters, I suspect, but the damage seems
>> to happen when $uri->query is called:
>>
>>    $q =~ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go;
>>
>> Would it not be better to issue a waring?
>>
>>
>> use HTTP::Request::Common;
>> use strict;
>> use warnings;
>> use Data::Dumper;
>> use Encode;
>>
>> my $content = {
>>    foo => 'bar',
>>    count => 123,
>>    works => encode_utf8("\x{263A}"),
>>    does_not_work => "\x{263A}",
>> };
>>
>> my $x = HTTP::Request::Common::POST(
>>    'http://localhost.com',
>>    $content,
>> );
>> print Dumper $x;
>

Reply via email to