2008年3月23日日曜日

UTF-8フラグにハマる

前回の続き。UTF-8の文字列をUTF-16LE with BOMに変換する際に、入力文字列によってはEncode::from_toが死ぬ。どうやら原因は入力文字列にUTF8フラグが立っているか否かのようだ(立っているとダメ)。


sub utf16bom {
        my $s = shift;
        $s = encode("utf8", "$s") if (utf8::is_utf8($s));
        Encode::from_to($s, 'utf-8', 'UTF-16LE');
        if($@)
        {
          die 'encoding error';        }
        $s= "\xff\xfe" . $s . "\x0\x0";
        return $s;
}


0 件のコメント:

コメントを投稿