From: "mame (Yusuke Endoh)" Date: 2012-04-20T04:36:41+09:00 Subject: [ruby-core:44467] [ruby-trunk - Bug #6324][Assigned] Spurious/incorrect warning on File.open with internal_encoding specified in string mode to duplicate external_encoding Issue #6324 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to duerst (Martin D��rst) Martin-sensei, Naruse-san, what do you think? -- Yusuke Endoh ---------------------------------------- Bug #6324: Spurious/incorrect warning on File.open with internal_encoding specified in string mode to duplicate external_encoding https://bugs.ruby-lang.org/issues/6324#change-26022 Author: jrochkind (jonathan rochkind) Status: Assigned Priority: Normal Assignee: duerst (Martin D��rst) Category: Target version: ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-linux] Normally, if you open a File specifying an internal_encoding equivalent to an external_encoding, using the string method, it gives you a warning. _Normally_ this warning is possibly appropriate and accurate: irb(main):018:0* f = File.open("test", "r:cp866:cp866") (irb):18: warning: Ignoring internal encoding cp866: it is identical to external encoding cp866 However, there is a case where it is NOT. If you have set your Encoding.default_internal irb(main):019:0> Encoding.default_internal = "UTF-8" irb(main):020:0> f = File.open("test", "r:cp866:cp866") (irb):20: warning: Ignoring internal encoding cp866: it is identical to external encoding cp866 In this case, it is neccesary to set the internal_encoding to override the non-nil Encoding.default_internal The functionality in fact _works_ here, we HAVE succesfully over-ridden the default_internal: irb(main):022:0> p f.internal_encoding => nil irb(main):023:0> f.read.encoding => # So the warning is in fact _wrong_, the :internal_encoding was NOT ignored, it was used as desired. The warning is also unneccesary, what was being done here makes perfect sense, there's no need for a warning. Note that the named argument approach works differnetly, no warning is output (whether or not you've set Encoding.default_internal). irb(main):024:0> f = File.open("foo", :external_encoding => "cp866", :internal_encoding => "cp866") => # # NO WARNING OUTPUT irb(main):025:0> f.internal_encoding => nil # CORRECT irb(main):026:0> f.read.encoding => # # CORRECT Both the named argument and the permission-string method seem to work properly and equivalently. But only the permission-string argument method gives you an incorrect warning. -- http://bugs.ruby-lang.org/