ゆきのぶ日記
2004/04/15(Thu)
■ 車
今まで運転してきた中で最大の交通事故に遭遇した。といっても当事者になったわけではない。常磐道を走っていると,対向車線から黒煙が上がっていて,その後ろには長い渋滞ができていた。こっちは高速で走っている上に中央分離帯には茂みがあるので,黒煙以外には何も判らなかった。でも,あれはきっと大事故だったのだろう。くわばらくわばら。
2007/04/15(Sun)
■ [Prog][Perl] Template::Extract と Unicode
主に自分用メモ。
Template::Extract を使って、WWW::Mechanize から取得した charset=utf-8 な html を解析しようとしたが、どうにもうまくいかない。template の内容にかかわらず、extract メソッドは常に undef を返す状態だった。何もマッチしなくて良いから、せめて {} くらいは返して欲しいのに。
同じ html を IE から取得してメモ帳からソースを保存したものを読み込んだ場合、ちゃんと解析できる。違いを調べてみたところ BOM (Byte Order Mark) ではないかと推測。下のように強引に BOM を付けてみたところ、解析に成功するようになった。
$doc_with_bom = "\xef\xbb\xbf" . $doc;
Data::Dumper を使っても表示されない違いだったので、解決に二日くらいかかってしまった。うーむ。
しかし、もっとスマートな方法はないものか。
(追記)
上記のトラブルは、そもそも template ファイルに BOM があったのが原因だった。template を BOM なしのファイルとして保存すると、問題は解決した。こっちの方がスマートですな。
BOM の有無を区別する場合、BOM なしの UTF8 エンコーディングのことを特に UTF8N と言うそうだ。Perl 周りではそのような区別はしていないようで、UTF8N を UTF8 と呼んでいる感じ。
文字コードは、まだよく分かっていないことが多いなぁ。
● ばたっち [ゆきのぶさん、Perler?]
● ゆきのぶ [ええ。かなり Perl な人です。]