日本語を含んだURIのエンコーディングの自動予想 [software]
http://forum.mozilla.gr.jp/?mode=al2&namber=21337&rev=&&KLOG=133
にもあるように、FirefoxのあるバージョンではURIエスケープしていない生の日本語を含むリンク、またはアドレスバーからのURLの入力、または、サイトが用意したフォームのあるページの文字コードをわざわざ変えてリソースをGETしてきた場合などは、どの文字コードが用いられるか予想できません。
この場合は、
などを使うのが良いのでしょうか。日本語以外に対応しているのでしょうか。
Perl(Catalyst)でお手軽に以下のようにしてはまずい?
my $value = uri_unescape($c->req->param('key'));
Encode::_utf8_off($value);
if ( $c->req->header('accept-language') =~ /^ja/ ) {
Encode::Guess->set_suspects(qw/euc-jp shiftjis 7bit-jis/);
}
my $enc = Encode::Guess->guess($value);
if ( ref($encoding) ) {
$value = $enc->decode($value);
} else {
eval { $value = Encode::decode_utf8($value, 1) };
from_to($value, 'euc-jp', 'utf8', 1) if ($@);
}
}
Plaggerでは、エンコードは、フィードやエントリ単位ですが、
http://plagger.org/trac/browser/trunk/plagger/lib/Plagger/Plugin/Filter/GuessLanguage.pm?rev=1249
のようなコードが入っていますね。
題名とは関係ありませんが、久しぶりにPlaggerのコードを見るとすごいファイル数が増えてますね。CPANへの依存も多い分、動く(実績のある)SYNOPSISとして利用できそうです。
Perlの今がぎっしり詰まっています。
コメント 0