From: Kouhei Sutou Date: 2003-03-21T22:20:37+09:00 Subject: [ruby-list:37391] Re: REXMLの日本語エンコーディングについて 須藤です。 From: tousaki@mail3.netwave.or.jp Subject: [ruby-list:37390] REXMLの日本語エンコーディングについて Date: Fri, 21 Mar 2003 21:43:53 +0900 > 何が原因なんでしょうか。 おそらく「ソース('あいうえお')の文字コード」が「UTF-8」では ないためです。 REXMLは入力時(パース前)と出力時に文字コードを変換して、 内部では常にUTF-8として扱っています。 > doc.root.add_element("element1").add_text('あいうえお') というようにパース時ではない時に追加した要素名や テキスト等については一切変換は行われません。 出力時の変換は doc.xml_decl.encoding が UTF-8 以外の場合のみ 行われます。今回は > Encoding = "EUC-JP" ... > doc << REXML::XMLDecl.new(Version, Encoding, Standalone) というように doc.xml_decl.encoding が UTF-8 以外に設定されているので 出力時 (doc.write) に「UTF-8」=>「EUC-JP」と変換します。 しかし、今回の場合はおそらく 「ソース('あいうえお')の文字コード」==「UTF-8」 ではないためにUconvが「UTF-8」=>「EUC-JP」という変換を できなかったものと思われます。 # REXMLが日本語エンコーディングをサポートしたというのは # 日本語エンコーディングのXML文書をパース出来て、出力も出来る # ということだと思います。 -- 須藤功平