Encode::First を CPAN にリリース。ある文字列を最小の character set でエンコードしたいときに使う。使い方は、
use Encode::First; my($enc, $bytes) = encode_first("ascii,latin-1,euc-jp,utf-8", $string);
という感じ。Email を送信するときとか、utf-8 を読めないメーラ対策として本文がすべて日本語なら iso-2022-jp で送る、というのを Gmail とかでもやっているんだけど、それをやりたくてつくった。
で、Traditional なエンコード (us-ascii, latin-1, iso-2022-jp, iso-2022-kr, koi8-ru etc.) を対象にして文字列をエンコードする Encode::Email::Best というのをつくろうとしたら、また iso-2022-jp でハマった。6ヵ月前にレポート したんだけどまだ直っていなくて、JIS 以外の文字列(ハングルやらタイ文字やら)渡すと全部 PERLQQ でアスキーにされてしまってCHECK フラグが無視されてしまうので、Encode::First がちゃんと動かない。
まあ workaround としては euc-jp にして、エラーがなければ iso-2022-jp にするというのがあるけど明らかに Encode.pm のバグなのでもう一度レポート。
EncodeのUpdateが遅れてて申し訳ありません。
他にもいろいろとちっちゃいのもたまっているので、今回のYAPC::Asia::2006のHackerthonの私のAssignmentということにさせてください。
Dan the Procrastinator
Posted by: 弾 on March 29, 2007 10:12 PM