From: Yui NARUSE Date: 2012-01-08T20:25:51+09:00 Subject: [ruby-core:41986] [ruby-trunk - Bug #5862] Strings not encoded in -E encoding Issue #5862 has been updated by Yui NARUSE. When we design the system, -e is used through a console (terminal emulator). So -e follows the consoles's encoding, and it is assumed to be the locale encoding. So -E doesn't effect. -K intends for compatibility. It effects all encodings except default internal. ---------------------------------------- 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