Issue #7201 has been reported by brixen (Brian Ford). ---------------------------------------- Bug #7201: Setting default_external affects STDIN encoding but default_internal does not https://bugs.ruby-lang.org/issues/7201 Author: brixen (Brian Ford) Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] Changing Encoding.default_external changes STDIN.external_encoding, but changing Encoding.default_internal does not change STDIN.internal_encoding. STDOUT and STDERR internal/external encodings are not changed in either case and are always nil. Is this a bug? See the following IRB transcript: $ irb 1.9.3p286 :001 > Encoding.default_external => #<Encoding:UTF-8> 1.9.3p286 :002 > Encoding.default_internal => nil 1.9.3p286 :003 > STDIN.external_encoding => #<Encoding:UTF-8> 1.9.3p286 :004 > STDIN.internal_encoding => nil 1.9.3p286 :005 > Encoding.default_external = "euc-jp" => "euc-jp" 1.9.3p286 :006 > STDIN.external_encoding => #<Encoding:EUC-JP> 1.9.3p286 :007 > STDIN.internal_encoding => nil 1.9.3p286 :008 > Encoding.default_internal = "iso-8859-1" => "iso-8859-1" 1.9.3p286 :009 > STDIN.internal_encoding => nil Thanks, Brian
on 2012-10-21 07:30
[ruby-trunk - Bug #7201][Assigned] Setting default_external affects STDIN encoding but default_inter
on 2012-11-05 13:59
Issue #7201 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to naruse (Yui NARUSE) Target version set to 2.0.0 Naruse-san, could you handle this? -- Yusuke Endoh <mame@tsg.ne.jp> ---------------------------------------- Bug #7201: Setting default_external affects STDIN encoding but default_internal does not https://bugs.ruby-lang.org/issues/7201#change-32411 Author: brixen (Brian Ford) Status: Assigned Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] Changing Encoding.default_external changes STDIN.external_encoding, but changing Encoding.default_internal does not change STDIN.internal_encoding. STDOUT and STDERR internal/external encodings are not changed in either case and are always nil. Is this a bug? See the following IRB transcript: $ irb 1.9.3p286 :001 > Encoding.default_external => #<Encoding:UTF-8> 1.9.3p286 :002 > Encoding.default_internal => nil 1.9.3p286 :003 > STDIN.external_encoding => #<Encoding:UTF-8> 1.9.3p286 :004 > STDIN.internal_encoding => nil 1.9.3p286 :005 > Encoding.default_external = "euc-jp" => "euc-jp" 1.9.3p286 :006 > STDIN.external_encoding => #<Encoding:EUC-JP> 1.9.3p286 :007 > STDIN.internal_encoding => nil 1.9.3p286 :008 > Encoding.default_internal = "iso-8859-1" => "iso-8859-1" 1.9.3p286 :009 > STDIN.internal_encoding => nil Thanks, Brian
[ruby-trunk - Bug #7201][Rejected] Setting default_external affects STDIN encoding but default_inter
on 2012-11-09 09:01
Issue #7201 has been updated by naruse (Yui NARUSE). Status changed from Assigned to Rejected This is not a bug in 1.9.3 and 2.0.0 while I feel this behavior is not so good. I won't change this but it will be big change, therefore I keep compatibility in near future. ---------------------------------------- Bug #7201: Setting default_external affects STDIN encoding but default_internal does not https://bugs.ruby-lang.org/issues/7201#change-32684 Author: brixen (Brian Ford) Status: Rejected Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] Changing Encoding.default_external changes STDIN.external_encoding, but changing Encoding.default_internal does not change STDIN.internal_encoding. STDOUT and STDERR internal/external encodings are not changed in either case and are always nil. Is this a bug? See the following IRB transcript: $ irb 1.9.3p286 :001 > Encoding.default_external => #<Encoding:UTF-8> 1.9.3p286 :002 > Encoding.default_internal => nil 1.9.3p286 :003 > STDIN.external_encoding => #<Encoding:UTF-8> 1.9.3p286 :004 > STDIN.internal_encoding => nil 1.9.3p286 :005 > Encoding.default_external = "euc-jp" => "euc-jp" 1.9.3p286 :006 > STDIN.external_encoding => #<Encoding:EUC-JP> 1.9.3p286 :007 > STDIN.internal_encoding => nil 1.9.3p286 :008 > Encoding.default_internal = "iso-8859-1" => "iso-8859-1" 1.9.3p286 :009 > STDIN.internal_encoding => nil Thanks, Brian
[ruby-trunk - Bug #7201] Setting default_external affects STDIN encoding but default_internal does n
on 2012-11-09 23:59
Issue #7201 has been updated by brixen (Brian Ford). Can someone please explain how the inconsistency with how the rest of IO instances would behave with transcoding is not a bug? Thanks, Brian ---------------------------------------- Bug #7201: Setting default_external affects STDIN encoding but default_internal does not https://bugs.ruby-lang.org/issues/7201#change-32727 Author: brixen (Brian Ford) Status: Rejected Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] Changing Encoding.default_external changes STDIN.external_encoding, but changing Encoding.default_internal does not change STDIN.internal_encoding. STDOUT and STDERR internal/external encodings are not changed in either case and are always nil. Is this a bug? See the following IRB transcript: $ irb 1.9.3p286 :001 > Encoding.default_external => #<Encoding:UTF-8> 1.9.3p286 :002 > Encoding.default_internal => nil 1.9.3p286 :003 > STDIN.external_encoding => #<Encoding:UTF-8> 1.9.3p286 :004 > STDIN.internal_encoding => nil 1.9.3p286 :005 > Encoding.default_external = "euc-jp" => "euc-jp" 1.9.3p286 :006 > STDIN.external_encoding => #<Encoding:EUC-JP> 1.9.3p286 :007 > STDIN.internal_encoding => nil 1.9.3p286 :008 > Encoding.default_internal = "iso-8859-1" => "iso-8859-1" 1.9.3p286 :009 > STDIN.internal_encoding => nil Thanks, Brian
Re: [ruby-trunk - Bug #7201] Setting default_external affects STDIN encoding but default_internal do
on 2012-11-10 16:21
Hello Brian, I'm not sure what the reason was for the current state, but I can easily imagine a situation where stdin/stdout are the console and therefore in one encoding, whereas the data a script is working on is all in another encoding. Regards, Martin.
[ruby-trunk - Bug #7201] Setting default_external affects STDIN encoding but default_internal does n
on 2012-11-12 06:29
Issue #7201 has been updated by naruse (Yui NARUSE). brixen (Brian Ford) wrote: > Can someone please explain how the inconsistency with how the rest of IO instances would behave with transcoding is not a bug? This is because IO object's internal property are set when it is created. In this case, STDIN's internal property is not changed when default_external and default_internal are set. And in this situation, STDIN.external_encoding returns current Encoding.default_external, so it looks as if Encoding.default_external changes STDIN. Following are detail = IO's internal property An IO object has two internal properties, extenc (external encoding) and intenc (internal encoding). When extenc and intenc are explicitly given like open("foo.txt", "r:UTF-8:ISO-8859-1"), extenc is UTF-8 and intenc is ISO-8859-1 When extenc and intenc are not given like open("foo.txt", "r") or STDIN without -E/-U, extenc is nil and intenc is nil. = IO#external_encoding If extenc is not nil, returns extenc. If extenc is nil, returns current Encoding.default_external. This method is to know what encoding is set on io.read. (this had to be always return extenc...) = IO#internal_encoding Returns intenc. = Conclusion Current inconsistency is derived from IO objects' internal state and settings for conversion. The change will need add more internal property and breaking IO#external_encoding. I couldn't design better one yet. ---------------------------------------- Bug #7201: Setting default_external affects STDIN encoding but default_internal does not https://bugs.ruby-lang.org/issues/7201#change-32804 Author: brixen (Brian Ford) Status: Rejected Priority: Normal Assignee: naruse (Yui NARUSE) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin10.8.0] Changing Encoding.default_external changes STDIN.external_encoding, but changing Encoding.default_internal does not change STDIN.internal_encoding. STDOUT and STDERR internal/external encodings are not changed in either case and are always nil. Is this a bug? See the following IRB transcript: $ irb 1.9.3p286 :001 > Encoding.default_external => #<Encoding:UTF-8> 1.9.3p286 :002 > Encoding.default_internal => nil 1.9.3p286 :003 > STDIN.external_encoding => #<Encoding:UTF-8> 1.9.3p286 :004 > STDIN.internal_encoding => nil 1.9.3p286 :005 > Encoding.default_external = "euc-jp" => "euc-jp" 1.9.3p286 :006 > STDIN.external_encoding => #<Encoding:EUC-JP> 1.9.3p286 :007 > STDIN.internal_encoding => nil 1.9.3p286 :008 > Encoding.default_internal = "iso-8859-1" => "iso-8859-1" 1.9.3p286 :009 > STDIN.internal_encoding => nil Thanks, Brian
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.