From: Nobuyoshi Nakada Date: 2012-01-08T17:35:50+09:00 Subject: [ruby-core:41983] [ruby-trunk - Bug #5862][Rejected] Strings not encoded in -E encoding Issue #5862 has been updated by Nobuyoshi Nakada. Category set to M17N Status changed from Open to Rejected =begin Ruby has three types of default encodings, internal, external, and source-code (which (({__ENCODING__})) equals to), and they are independent each others. (({-E})) option sets the former two, but does nothing for source-code encoding. If you want to set source-code encoding in (({-e})), try: $ ruby -e'#encoding:ascii-8bit' -e 'p __ENCODING__' =end ---------------------------------------- Bug #5862: Strings not encoded in -E encoding https://bugs.ruby-lang.org/issues/5862 Author: Brian Ford Status: Rejected Priority: Normal Assignee: Category: M17N Target version: ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0] If I pass the -E option, the Encoding.default_external is set to that encoding, but the string in the -e code is not set to that encoding, nor is the value of __ENCODING__ set to it. $ ruby -v -E ascii-8bit -e 'p "abc".encoding, Encoding.default_external, Encoding.default_internal, __ENCODING__' ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0] # # nil # However, if I pass -Ka, the encodings for all of 1. Encoding.default_external, 2. the -e string literal, and 3. __ENCODING__ in -e code are set to eg ASCII-8BIT. $ ruby -v -Ka -e 'p "abc".encoding, Encoding.default_external, Encoding.default_internal, __ENCODING__' ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0] # # nil # If -E {enc} sets Encoding.default_external to {enc} and data read from IO streams is set to encoding Encoding.default_external, and STDIO is an IO stream, shouldn't passing -E {enc} cause the -e string literal to have encoding {enc}? If not, could someone please explain the exact semantics of these two different command line options. Thanks, Brian -- http://redmine.ruby-lang.org