こりゃきづかなんんだ。PoCo::Client::HTTP 0.80でこんなんでてる。
2006-10-25 06:55:14 (r294) by rcaputo
lib/POE/Component/Client/HTTP.pm M; t/14_gzipped_content.t A; MANIFEST
M; Makefile.PL M; lib/POE/Component/Client/HTTP/Request.pm MApply Rob Bloodgood's patch to transparently decode non-streaming
content before it's returned. This gives us support for gzip
compressed content. Resolves long-standing rt.cpan.org ticket 8454.
PoCo::Client::HTTPでGETしまくってたら、一部のサーバーのどの日本語ページも$res->content_typeの文字コードと実際の文字コードが合わなくておかしいと思ってたんだけど、こういうことだな?多分0.80以降のXangoベースのアプリも壊れる予感。
うぅ、こいつは小さな親切、大きなお世話の類いだな・・・GunghoではしょうがないのでPOEエンジン内で、またエンコードしなおすという荒技を使う事にしてみる。
# Work around POE doing too much for us.
if ($POE::Component::Client::HTTP::VERSION >= 0.80) {
if ($res->content_encoding) {
my @ct = $res->content_type;
if ((shift @ct) =~ /^text\//) {
foreach my $ct (@ct) {
next unless $ct =~ /charset=((?!utf-?8).+)$/;
my $enc = $1;
require Encode;
$res->content( Encode::encode($enc, $res->content) );
last;
}
}
}
}
これ、オプションにしてくれればいいのに。