blog.鶯梭庵

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

Encode と Jcode [/this_blog/perl]

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] (59)
[/links] (155)
[/mac] (87)
[/music] (31)
[/origami] (274)
[/this_blog/ajax] (7)
[/this_blog/blosxom] (5)
[/this_blog/history] (16)
[/this_blog/perl] (9)

最新記事

折り紙ボウル [/origami]
Apple、2つの大失態 [/mac]
tessellation と corrugation [/origami]
Windows Vista のピントが外れたキャンペーン [/links]
折り紙フォント [/origami]
You may want to [/language]
ポール・ジャクソンさんのインタビュー [/origami]
ジョセフ・ウーさんのインタビュー [/origami]
Skype を使うと盗聴される? [/links]
折り紙をモチーフにしたデザインいろいろ [/origami]
OrigamiUSA コンベンション・フォトレポート [/origami]
地球温暖化の嘘 [/links]
0.999... = 1 という式について [/links]
不切一枚折り畳み椅子 [/origami]
折り紙風?ファッション [/origami]

毎日見るサイト

-> Slashdot
-> Boing Boing
-> ITmedia
-> デイリーポータルZ
-> 新しもの好きのダウンロ〜ド
-> MACお宝鑑定団
-> MLB(日本語)
-> NFL(日本語)
-> GetUpEnglish

毎日聞くラジオ

-> WNYC2
-> BBC Radio 3
-> NHK FM

製作に関わっているサイト

-> 折紙探偵団
-> TidBITS 日本語版
-> 日本 HP

羽鳥 公士郎