summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--encoding.c4
-rw-r--r--ruby.c7
-rw-r--r--spec/ruby/command_line/dash_upper_k_spec.rb4
-rw-r--r--spec/ruby/library/stringio/binmode_spec.rb2
4 files changed, 11 insertions, 6 deletions
diff --git a/encoding.c b/encoding.c
index e1441caec2..64748ceb27 100644
--- a/encoding.c
+++ b/encoding.c
@@ -1684,7 +1684,9 @@ rb_enc_default_external(void)
* File data written to disk will be transcoded to the default external
* encoding when written, if default_internal is not nil.
*
- * The default external encoding is initialized by the locale or -E option.
+ * The default external encoding is initialized by the -E option.
+ * If -E isn't set, it is initialized to UTF-8 on Windows and the locale on
+ * other operating systems.
*/
static VALUE
get_default_external(VALUE klass)
diff --git a/ruby.c b/ruby.c
index 2ddea6b430..c01d78ef7e 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1819,6 +1819,9 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
Init_ruby_description();
Init_enc();
lenc = rb_locale_encoding();
+#if UTF8_PATH
+ uenc = rb_utf8_encoding();
+#endif
rb_enc_associate(rb_progname, lenc);
rb_obj_freeze(rb_progname);
parser = rb_parser_new();
@@ -1839,7 +1842,7 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
enc = rb_enc_from_index(opt->ext.enc.index);
}
else {
- enc = lenc;
+ enc = IF_UTF8_PATH(uenc, lenc);
}
rb_enc_set_default_external(rb_enc_from_encoding(enc));
if (opt->intern.enc.index >= 0) {
@@ -1944,7 +1947,7 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
enc = rb_enc_from_index(opt->ext.enc.index);
}
else {
- enc = lenc;
+ enc = IF_UTF8_PATH(uenc, lenc);
}
rb_enc_set_default_external(rb_enc_from_encoding(enc));
if (opt->intern.enc.index >= 0) {
diff --git a/spec/ruby/command_line/dash_upper_k_spec.rb b/spec/ruby/command_line/dash_upper_k_spec.rb
index a060eab793..7e71532295 100644
--- a/spec/ruby/command_line/dash_upper_k_spec.rb
+++ b/spec/ruby/command_line/dash_upper_k_spec.rb
@@ -58,8 +58,8 @@ describe 'The -K command line option' do
end
it "ignores unknown codes" do
- locale = Encoding.find('locale')
+ external = Encoding.find('external')
ruby_exe(@test_string, options: '-KZ').should ==
- [Encoding::UTF_8.name, locale.name, nil].inspect
+ [Encoding::UTF_8.name, external.name, nil].inspect
end
end
diff --git a/spec/ruby/library/stringio/binmode_spec.rb b/spec/ruby/library/stringio/binmode_spec.rb
index 83178787f3..853d9c9bd6 100644
--- a/spec/ruby/library/stringio/binmode_spec.rb
+++ b/spec/ruby/library/stringio/binmode_spec.rb
@@ -9,7 +9,7 @@ describe "StringIO#binmode" do
it "changes external encoding to BINARY" do
io = StringIO.new
- io.external_encoding.should == Encoding.find('locale')
+ io.external_encoding.should == Encoding.find('external')
io.binmode
io.external_encoding.should == Encoding::BINARY
end