2010年10月8日金曜日

[Perl] UTF8フラグのON/OFF

¥(U+00A5) で試したメモ。

U+00A0〜U+00FFまでいくつかピックアップして同様の処理を行ったところ、
誤変換や文字化けが発生した。
結論としては、utf8::upgrade/downgrade と Encode::decode_utf8/encode_utf8
の互換性はないということか。

↓utf8::upgrade()
"\303\202\302\245"\0 [UTF8 "\x{c2}\x{a5}"]
↓utf8::downgrade()
"\302\245"\0  (¥:文字化けなし)
↓utf8::upgrade()
"\303\202\302\245"\0 [UTF8 "\x{c2}\x{a5}"]
↓Encode::encode_utf8()
"\303\202\302\245"\0   (Â¥:Âが追加される)
↓Encode::decode_utf8()
"\302\245"\0 [UTF8 "\x{a5}"]
↓utf8::downgrade()
"\245"\0  (c2欠落:文字化け)
↓Encode::decode_utf8()
"\302\245"\0 [UTF8 "\x{a5}"]
↓Encode::encode_utf8()
"\302\245"\0  (¥:文字化けなし)

参考)

0 件のコメント: