From: siena@... (Siena.) Date: 2002-05-28T20:23:12+09:00 Subject: [ruby-list:35292] Re: ANNOUNCE: REXML のドキュメント Siena. です。 ▼ [ruby-list:35276] Yoshida Masato さん 》REXML::Source のほうは,UTF-16 のサロゲートペア対応, 》UTF-16(LE|BE)対応,UTF-32(|LE|BE)対応なども入れるべきでしょ 》うが,今の段階ではこんなものでいいのではないでしょうか。 そうですね。まず、複数の文字エンコーディングを ちゃんと扱えるようになってからで良いですよね。 》Iconv のラッパというのがいいと思いますが,iconv の実装に違い 》がありすぎてどうしようもないかもしれません。Solaris 2.6 以前 》の iconv のように UTF-8 に対応していないものもあるし,言語パッ 》ケージがインストールしてあるかどうかでも違うような。 変換できない (Uconv とか NKF とかの代替手段もない) 場合には どうにもできませんから、例外を上げるしかないでしょうか。 XML 仕様的にも、処理できない時は fatal error とありますし。 えぇと、文字エンコーディング変換ライブラリで 標準添付になるものは、Iconv, NKF だけでしたっけ? # 日本語だけなら、NKF と Uconv があればなんとか... ^^; 》REXML::Output は変換できない文字を全て文字参照に置き換えてし 》まいますが,要素名などを文字参照に置き換えるのはまずいでしょ 確かに困りますね。 変換できない場合は、例外を上げてしまうので良いですよね。 XML 仕様的には、読み込み時に文字エンコーディングが決定可能で かつそれに違反する文字が出現した時には fatal error と ありますから、逆に出力する場合も同様の扱いという事です。 これですと、利用側で別の文字エンコーディングに 変更してから retry してもらうというのも可能です。 少なくとも Iconv ですと、サポートしない変換が指定されたら 例外を上げてくる筈ですから、これに限れはそのままで良いですね。 一般化するならば、REXML::{Source,Output}#ext_encoding で 変換モジュールの存在をチェックするとかでしょうか。 ついでに、変換可能な文字エンコーディングか 調べる手段も用意できればベターだと思います。 とかいうのを、REXML::Encoding でやろうとしてました ^^;? # 空だったので気になって ^^; それとも、Output が文字エンコーディング指定を utf-8 に上書きしてでも出力すべきでしょうか。 --- Siena.