✖
Perl の utf8 関係が未だ全く理解できない。わからないことがわからないので整理
現状やってること
- utf8 フラグを全く考慮せずに書き、文字化けした時点で
- use utf8 つけたりはずしたり
- utf8::encode, utf8::decode を適当にする
最も知りたいこと
- 確実に文字化けをしない方法
わかること
- 下位互換性でデフォルトが latin-1
- use utf8 しててもフラグたたないことがある……
- 入力時にフラグ立てて 出力時に落とせ、とかいう運用上のやつ
わからないこと
- encode/decode の覚えかた
- (いつも適当にどっちかやって is_utf8 ダンプするハメになる。perldoc utf8 みてもわからない)
- ある文字列 (サブルーチンの返り値とか) が utf8 flagged かどうかわからないときどうすればいいか
- 誰がその文字列の状態に責任を持ってるのか
- 誰かが責任をはたせていない場合にできることは?
- 自分はどこまで責任を持てばいいのか
- 実際問題これってよくあると思うんだけど……
- use utf8 の意味
- フラグが立ったり立たなかったりするのは混乱する
- use utf8 せずに全部に utf8::decode すべきなんじゃ?
- 全く utf8 フラグを考慮してない場合にどうなるか
- 海外製のだいたいの CPAN ライブラリのこと
- 複雑奇怪な問題を全ての人が「知っている」ことを前提にするのは間違いだと思う
- 上記責任の問題もあるのだけど、他人が果たせない責任を果たすことはよくあることなのだから、そういうことが確実にできるようでないと使えない。
- 要は文字化けさせたくないだけ
- 正規表現マッチを正しくさせるには?
- 正規表現のエンコーディングは?
- 普通に開発していて latin-1 が必要になることはあるのか?
- ライブラリの返り値でそうなることがあるとか?
- latin-1 と byte 列はちがうのか?
- utf8 文字列 / latin-1 文字列 / バイト列 ?
- なんでこんな複雑なのか
- 下位互換性、というのはわかる、けど、