二〇〇五年 睦月 十九日 水曜日■ Encode と Jcode [/this_blog/perl]この記事は書かれてから1年以上経過しています。内容が古くなっている可能性があります。コメントの受付は終了しました。 1月16日の記事「アクセスログの referer を見る」で、文字コードを変換するのに Encode モジュールを使ったが、実際使ってみると、判定に失敗する場合が多い。Perl 5.8.x Unicode関連によると、Jcode、Encode のメンテナの弾さん曰く「Guessを使う場合の心得。1. 出来れば使わない 2. 以下略」ということなので、使わないことにした。 referer をデコードするサブルーチンを、Jcode モジュールを使って書き直すと、こうなる。 use Jcode; my $referer = shift @_ or return 'n/a'; $referer =~ tr/+/ /; $referer =~ s/%([a-f\d]{2})/pack 'H2', $1/egi; jcode $referer; 最後の行は、Jcode->new($referer); と書いても同じ。オブジェクトの中では、文字列は EUC で格納されていて、オブジェクトが評価されると、その文字列が返る。 なお、Jcode モジュールは標準ではインストールされていないので、必要ならインストールすること。 |
カテゴリ
[/language] (98) 最新記事
◇ パスワードについてのあなたの常識はもはや非常識かもしれない・その1 [/links] |