Siena. です。

▼ [ruby-list:35296] < Yoshida Masato さん

》> 変換できない場合は、例外を上げてしまうので良いですよね。> 少なくとも Iconv ですと、サポートしない変換が指定されたら> 例外を上げてくる筈ですから、これに限れはそのままで良いですね。

これらは、指定した文字エンコーディング名を Iconv が
未サポートとする場合の話でした。話が混じってしまいました。

》変換できない文字をうまく検出できない iconv の実装があるはずです。Solaris がそうですし,ほかにもあったような。一見うまく変換できたように見えて,変換できない文字が '?' に置き換えられていたりします。

Solaris の Iconv(3) では、違法な文字ならそこで停止、合法な文字で
変換先文字が存在しない場合は実装定義の変換を行なう、とありますね。
Iconv が受理した文字エンコーディングで、文字の対応表やコード
ポイントの範囲チェックが正しくない場合などもあるかもしれません。
これらは確かに問題になりますけれど、Iconv の実装の問題で、
それを上位のレイヤーでどうこうできるものでもないように思います。
ベストエフォートという事で良いのではないでしょうか。
そこまでやるとしたら、プラットフォーム依存の Iconv ではなく、
GNU Iconv (や ICU) の利用を考えないと難しいですよね。

# そうか、同じプラットフォームでも、どの Iconv が
# 有効になっているのかも判別できないといけないのか... --;


》> とかいうのを、REXML::Encoding でやろうとしてました ^^;?Source と Output で処理が重複してしまったので外に追い出そうとした名残です。

なるほど。

》> それとも、Output が文字エンコーディング指定を> utf-8 に上書きしてでも出力すべきでしょうか。
》
》それはアプリケーションの仕事でしょうね。

ですよね。

---
Siena. <mailto:siena / cr.chiba-u.ac.jp>