blog.鶯梭庵

二〇〇五年 睦月 十九日 水曜日

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 モジュールは標準ではインストールされていないので、必要ならインストールすること。

[このカテゴリをまとめて読む。] [最新の記事を読む。]

RSS feed

カテゴリ

[/language] (98)
[/links] (254)
[/mac] (114)
[/music] (36)
[/origami] (406)
[/this_blog/ajax] (7)
[/this_blog/blosxom] (4)
[/this_blog/history] (12)
[/this_blog/perl] (9)

最新記事

パスワードについてのあなたの常識はもはや非常識かもしれない・その1 [/links]
ニューラルネットワークとディープラーニングで翻訳はどうなる・その5 [/language]
ニューラルネットワークとディープラーニングで翻訳はどうなる・その4 [/language]
HTTPS 対応 [/links]
ひらがな・カタカナ学習ウェブアプリ [/links]
日本語の「た」と英語の過去形 [/language]
ORI-REVO で回転楕円体を折る・その2 [/origami]
ORI-REVO で回転楕円体を折る・その1 [/origami]
折り紙建築 [/origami]
折鶴に松図小柄 [/origami]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その6 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その5 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その4 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その3 [/links]
改訂版・たぶん、ほとんどの人は viewport meta タグの指定をまちがえてる・その2 [/links]

羽鳥 公士郎