From: Kouhei Sutou Date: 2011-02-22T23:47:15+09:00 Subject: [ruby-dev:43249] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports many errors and failures without iconv 須藤です。 In <4D63C8ED.7060803@airemix.jp> "[ruby-dev:43248] Re: [Ruby 1.9-Bug#3990][Closed] tests of rexml/rss reports many errors and failures without iconv" on Tue, 22 Feb 2011 23:32:17 +0900, "NARUSE, Yui" wrote: > 出力のエンコーディングは Windows-31J だけど名乗りは Shift_JIS にさせたい > という例もありえますね。また、さらに Solaris 用に PCK と名乗らせたいとか。 > (PCK は Windows-31J か Shift_JIS の alias として追加予定) うーん。 Solarisで動くXMLパーサ(?iconv?)はPCKというのも解釈するん ですか。 > 別のユースケースだと、ケータイ絵文字を含んだUTF-8なXHTMLをREXMLで処理して、 > UTF8-DoCoMoとして出力しつつ、そいつにUTF-8と名乗らせたいとか。 あぁ、これはありそうですねぇ。 > 一般論としては XML 宣言の encoding 属性は受信側のXMLパーサの > 文字コード変換器の引数なので、Ruby が変換は可能だが名前を知らない場合や、 > Ruby では alias になっちゃってる例が考えられます。 これがしっくりこないんですよね。 XMLはポータブルな書式だった気がするんですが、特定のXMLパーサ のみで動くような出力にするのを推奨するみたいだからかしら。 > そもそも、Encoding は鬼車のモジュールに対応するオブジェクトで、 > transcode の変換器に対する引数とは別の話ですよ。 え、そうなんですか。 > また、encoding 宣言は送信側である Ruby/REXML ではなく、 > 受信側が解釈するものなので、こちらがサポートしているかどうかは本質的には > 問題ではありませんね。Encoding オブジェクトを受け付けてもいいとは思いますが。 ↑の通りXMLの本質的なのはポータブルであることだと思っている ので、問題な気がするんですよね。 > うむむ?ここの「内部処理用符号」って現在もっぱら UTF-8 を使っている、 > REXML 内部でXML断片に用いる encoding とは別でしたか? あぁ、そういえば、そうだったかも。 失礼しました。 > 念のためまとめ直すと、登場人物は以下の三者ですね。 > * REXML 内部エンコーディング > * REXML 内部での処理で用いるエンコーディング > * 現在もっぱら UTF-8 > * Encoding オブジェクト可 > * REXML 出力エンコーディング > * 文字列化して出力した結果の encoding > * transcode が「内部to出力」の変換を扱える必要 > * Encoding オブジェクト可 > * 出力結果のXML宣言のencoding属性の値 > * 出力結果を解釈するどこかのXMLパーサが見る値 > * Ruby が理解できる必要はない > * String が望ましい ありがとうございます。 うんん。やっぱりまだちょっとでも手を出さなかったほうがよかっ たかも。また、数ヶ月後に(時間ができたら)考えます。