ねこ丸です。
言語やライブラリ設計の話ではなく、動くコードを書くユーザーの側からす
ると、文字コードの判別は
1. 何がくるか分からない状態はできるだけ作らない
2. ヒントを埋め込めるならそれを利用する
3. 両方ダメなら諦めてできるだけ取得した文字列全体を使って判別する
って感じになるんでしょうかね。
1 は専用のクライアントを利用すれば可能かなと思いますが、Web やメール
などの場合は 2 か 3 ですね。メールは encoding が入ってるんでそれを便り
にしていいかと思うんですが、よりセキュアにということであれば 3 にいきつ
く、のかな。feed でマッシュアップ、なんかも基本的には同じかな? まぁ
XML であれば validor に投げてダメなら弾くっていう乱暴な処理もできなくは
なさそうですが。それでいいならアプリ書く側は楽ちんですね。
Ruby の文字コード周りは悩ましいですね。基本 utf-8 かつメールなどのメッ
セージは us-ascii のみ、という海外の Web サイトなんかではかなり楽ちんだ
と思いますが。
逆に Ruby でなけりゃそこまで「らしさ」は気にならないってこともあるん
ですが、あの NKF にそのままスルーする感じはなんともアンバランスというか
不自然なところではあります。
ところで私は実は us-ascii 以外の文字リテラルの表記については利用した
ことがない(いつも生書き(^^;)ので確認させてほしいのですが、これがある
と、例えばファイルは euc-jp で書いているけれども実際にそこに書かれてい
る文字は utf-8 で解釈される…ということが可能になるんですよね?
# ちょっとは調べて書け > 自分
いや何が気になっているかと言うと、みなさんは内部エンコーディングの変
更を大量のファイルに対して行わなきゃいけなくなった場合はどうするのかな
と思ったもので。まぁ、ぶっちゃけ目の前に euc-jp で書かれた大量の PHP の
ファイルがあるわけですが、これ、将来的に utf-8 にしますって話になったら
どうすんのかなーと。まぁいつもは想像しただけで怖くなって無視してるんで
すが、何か方法あるんなら嬉しいなと思った次第です。
# PHP にもそんな表記法はなさげですが
--
ねこ丸