HTTP::Request::Commonでsjisをエスケープしたパラメータにゴミが入る
use strict;
use warnings;
use utf8;
use Encode;
use HTTP::Request::Common;
my $name = "北海道";
$name = encode('shift_jis', $name);
my $req = POST 'http://ido.nu/kuma/pref', [
name => $name
];
print $req->as_string;
こういうコードでクエリで送る文字列をsjisでエスケープされたものにしたかったんだけどうまく行かないので表示させてみたら
POST http://ido.nu/kuma/pref
Content-Length: 31
Content-Type: application/x-www-form-urlencoded
name=%C2%96k%C2%8AC%C2%93%C2%B9
%96k%8AC%93%B9になるべきところに%C2がやたら混じっていて文字が壊れている。
use bytesで囲めば直る。
{
use bytes;
my $req = POST 'http://ido.nu/kuma/pref', [
name => $name
];
print $req->as_string;
}
でももとのコードでなんでうまくいかないのか分からない。
About this entry
You’re currently reading “HTTP::Request::Commonでsjisをエスケープしたパラメータにゴミが入る,” an entry on ku
- Published:
- 2009.11.25 / 12pm
- Category:
- perl

2 Comments
Jump to comment form | comments rss [?]