From: "NARUSE, Yui" Date: 2011-02-23T00:27:19+09:00 Subject: [ruby-dev:43250] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports many errors and failures without iconv 成瀬です。 (2011/02/22 23:47), Kouhei Sutou wrote: >> 出力のエンコーディングは Windows-31J だけど名乗りは Shift_JIS にさせたい >> という例もありえますね。また、さらに Solaris 用に PCK と名乗らせたいとか。 >> (PCK は Windows-31J か Shift_JIS の alias として追加予定) > > うーん。 > Solarisで動くXMLパーサ(?iconv?)はPCKというのも解釈するん > ですか。 Solaris の iconv はこの辺とかですね。「PC漢字」という名称由来らしい。 http://download.oracle.com/docs/cd/E19455-01/816-2371/6m8no45nr/index.html 前提として、iconv って glibc iconv / GNU libiconv だけじゃないので。 >> 一般論としては XML 宣言の encoding 属性は受信側のXMLパーサの >> 文字コード変換器の引数なので、Ruby が変換は可能だが名前を知らない場合や、 >> Ruby では alias になっちゃってる例が考えられます。 > > これがしっくりこないんですよね。 > XMLはポータブルな書式だった気がするんですが、特定のXMLパーサ > のみで動くような出力にするのを推奨するみたいだからかしら。 XML がポータブルなのは外枠だけでしょう。 中身は基本的に一定の受信者が想定されていると思います。 XHTML でいえば想定されているのはもっぱら Web ブラウザとか、 オレオレXMLデータなら対応するオレプロダクトとか。 逆に言えば外枠だけにとどめているから XML 自体はあれだけシンプルかつポータブルになったと。 >> そもそも、Encoding は鬼車のモジュールに対応するオブジェクトで、 >> transcode の変換器に対する引数とは別の話ですよ。 > > え、そうなんですか。 transcode への from/to 引数はあくまで変換表を呼び出すための識別子なので、 本質的には Encoding とは独立の存在になっています。 実際の実装でも、UTF-7 は encoding があっても変換がなく、 escape 絡みでは変換があっても対応する encoding は当然ながらありません。 >> また、encoding 宣言は送信側である Ruby/REXML ではなく、 >> 受信側が解釈するものなので、こちらがサポートしているかどうかは本質的には >> 問題ではありませんね。Encoding オブジェクトを受け付けてもいいとは思いますが。 > > ↑の通りXMLの本質的なのはポータブルであることだと思っている > ので、問題な気がするんですよね。 「UTF-8 と UTF-16 以外のエンコーディングはポータブルではない」で答えになりませんかね。 "All XML processors must accept the UTF-8 and UTF-16 encodings of Unicode" http://www.w3.org/TR/REC-xml/#charsets > うんん。やっぱりまだちょっとでも手を出さなかったほうがよかっ > たかも。また、数ヶ月後に(時間ができたら)考えます。 yugui さんが RubyKaigi あたりで 1.9.3 を出したいと仰っていたはずなので、 数ヶ月だとそこへの仕様変更のタイミングとしてはぎりぎりになります。 というか、そこから議論を始めると高確率でアウトでしょう。 で、現状既に REXML::XMLDecl#encoding は仕様変更が入っているんですが、 ここは巻き戻しませんか。ここ以外は今入っている修正については賛成なので。 -- NARUSE, Yui