Feature #4872
Associated revisions
- lib/rexml/document.rb (REXML::Document#write): Add :encoding option to support custom XML encoding. Feature #4872
- test/rexml/test_document.rb: Add tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Add :encoding option to support custom XML encoding. Feature #4872
- test/rexml/test_document.rb: Add tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Add :encoding option to support custom XML encoding. Feature #4872
- test/rexml/test_document.rb: Add tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Add :encoding option to support custom XML encoding. Feature #4872
- test/rexml/test_document.rb: Add tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Add :encoding option to support custom XML encoding. Feature #4872
- test/rexml/test_document.rb: Add tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Document encoding option. Now different encoding between XML file's encoding and XML declaration's encodiong is support. Feature #4872
- lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's encoding.
- test/rexml/test_document.rb: Update tests for the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
- lib/rexml/document.rb (REXML::Document#write): Document encoding option. Now different encoding between XML file's encoding and XML declaration's encodiong is support. Feature #4872
- lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's encoding.
- test/rexml/test_document.rb: Update tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Document encoding option. Now different encoding between XML file's encoding and XML declaration's encodiong is support. Feature #4872
- lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's encoding.
- test/rexml/test_document.rb: Update tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Document encoding option. Now different encoding between XML file's encoding and XML declaration's encodiong is support. Feature #4872
- lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's encoding.
- test/rexml/test_document.rb: Update tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Document encoding option. Now different encoding between XML file's encoding and XML declaration's encodiong is support. Feature #4872
- lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's encoding.
- test/rexml/test_document.rb: Update tests for the above change.
- lib/rexml/document.rb (REXML::Document#write): Document encoding option. Now different encoding between XML file's encoding and XML declaration's encodiong is support. Feature #4872
- lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's encoding.
- test/rexml/test_document.rb: Update tests for the above change.
History
#1
[ruby-dev:43751]
Updated by kou (Kouhei Sutou) almost 7 years ago
(本文中で #3990 にリンクをはるにはどうしたらよいのでしょうか。。。)
#2
[ruby-dev:44161]
Updated by kou (Kouhei Sutou) almost 7 years ago
=begin
成瀬さんと話して(やるなら)以下のようにすることにした。
- REXML::XMLDecl#encodingはEncodingを返すようにする。
- REXML::XMLDecl#writeで使うXMLエンコーディングは引数で指定できるようにする。(指定されない場合はREXL::XMLDecl#encodingを使ってXMLエンコーディングを決める。) =end
#3
Updated by shyouhei (Shyouhei Urabe) about 6 years ago
- Status changed from Open to Assigned
#4
Updated by kou (Kouhei Sutou) over 5 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r37355.
Kouhei, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
- lib/rexml/document.rb (REXML::Document#write): Add :encoding option to support custom XML encoding. Feature #4872
- test/rexml/test_document.rb: Add tests for the above change.
#5
[ruby-dev:46385]
Updated by kou (Kouhei Sutou) over 5 years ago
kou (Kouhei Sutou) wrote:
- REXML::XMLDecl#encodingはEncodingを返すようにする。
これはやらないことにしました。
これをやりたかったもともとの理由は、ユーザーとしてエンコーディング情報を正規化した状態で扱いたかった(UTF-8かutf-8かとか気にしたくない)からでした。が、よく見てみたら、XMLDecl#encodingはupcaseして正規化していました。(utf-8を気にせずに常にUTF-8かで確認できた。)なので、やる理由がなくなりました。
あと、↓の通り、XML宣言のencodingとXML文書のエンコーディングを結び付けないことにした(結び付けないこともできるようにした)のでXML文書のエンコーディングをXMLDecl#encoding(これはXML宣言のencoding)で返すのがおかしいなぁと思うようになりました。なので、やめました。XML文書のエンコーディングをだれが持つかという話は↓で。
- REXML::XMLDecl#writeで使うXMLエンコーディングは引数で指定できるようにする。(指定されない場合はREXL::XMLDecl#encodingを使ってXMLエンコーディングを決める。)
これはREXML::XMLdecl#writeじゃなくてREXML::Document#writeで出力エンコーディングを指定できるようにしました。
XML宣言のencodingとXML文書のエンコーディングを変えたい時(例えば、XML宣言のencodingはShift_JISでXML文書のエンコーディングはWindows-31Jにしたい時)はこうします。
document.xml_decl.encoding = "Shift_JIS"
document.write(:encoding => "Windows-31J")
こうした理由はXML文書を生成するときはREXML::XMLDecl#writeではなくREXML::Document#writeを使うので、REXML::XMLDecl#writeでカスタマイズできても使いづらいからです。
XML宣言のencodingとXML文書のエンコーディングを別々に指定したい、というのが実現したいことです。それを、REXML::Docuemnt#writeでやるならXML宣言のencodingではなくXML文書のエンコーディングを指定するのが自然なので(DocumentはXML文書のことだから)、XML宣言のencodingではなくXML文書のエンコーディングを出力時に変更できるようにしました。
#6
Updated by naruse (Yui NARUSE) over 5 years ago
kou (Kouhei Sutou) wrote:
kou (Kouhei Sutou) wrote:
- REXML::XMLDecl#encodingはEncodingを返すようにする。
これはやらないことにしました。
これをやりたかったもともとの理由は、ユーザーとしてエンコーディング情報を正規化した状態で扱いたかった(UTF-8かutf-8かとか気にしたくない)からでした。が、よく見てみたら、XMLDecl#encodingはupcaseして正規化していました。(utf-8を気にせずに常にUTF-8かで確認できた。)なので、やる理由がなくなりました。あと、↓の通り、XML宣言のencodingとXML文書のエンコーディングを結び付けないことにした(結び付けないこともできるようにした)のでXML文書のエンコーディングをXMLDecl#encoding(これはXML宣言のencoding)で返すのがおかしいなぁと思うようになりました。なので、やめました。XML文書のエンコーディングをだれが持つかという話は↓で。
- REXML::XMLDecl#writeで使うXMLエンコーディングは引数で指定できるようにする。(指定されない場合はREXL::XMLDecl#encodingを使ってXMLエンコーディングを決める。)
これはREXML::XMLdecl#writeじゃなくてREXML::Document#writeで出力エンコーディングを指定できるようにしました。
XML宣言のencodingとXML文書のエンコーディングを変えたい時(例えば、XML宣言のencodingはShift_JISでXML文書のエンコーディングはWindows-31Jにしたい時)はこうします。document.xml_decl.encoding = "Shift_JIS"
document.write(:encoding => "Windows-31J")こうした理由はXML文書を生成するときはREXML::XMLDecl#writeではなくREXML::Document#writeを使うので、REXML::XMLDecl#writeでカスタマイズできても使いづらいからです。
XML宣言のencodingとXML文書のエンコーディングを別々に指定したい、というのが実現したいことです。それを、REXML::Docuemnt#writeでやるならXML宣言のencodingではなくXML文書のエンコーディングを指定するのが自然なので(DocumentはXML文書のことだから)、XML宣言のencodingではなくXML文書のエンコーディングを出力時に変更できるようにしました。
なるほど、確かにその方がよいと思います。
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e