diff --git a/ext/date/date_core.c b/ext/date/date_core.c index 251d025..7ab3fe6 100644 --- a/ext/date/date_core.c +++ b/ext/date/date_core.c @@ -7073,6 +7073,7 @@ strftimev(const char *fmt, VALUE self, (*func)(self, &tmx); len = date_strftime_alloc(&buf, fmt, &tmx); str = rb_usascii_str_new(buf, len); + str = rb_str_export_to_enc(str, rb_default_internal_encoding()); if (buf != buffer) xfree(buf); return str; } diff --git a/test/date/test_date.rb b/test/date/test_date.rb index 86790e4..b4a1909 100644 --- a/test/date/test_date.rb +++ b/test/date/test_date.rb @@ -6,6 +6,22 @@ class DateTimeSub < DateTime; end class TestDate < Test::Unit::TestCase + def test_default_encoding + original = Encoding.default_internal + Encoding.default_internal = nil + assert_equal Encoding::US_ASCII, Date.today.to_s.encoding + ensure + Encoding.default_internal = original + end + + def test_default_internal + original = Encoding.default_internal + Encoding.default_internal = Encoding::UTF_8 + assert_equal Encoding::UTF_8, Date.today.to_s.encoding + ensure + Encoding.default_internal = original + end + def test__const assert_nil(Date::MONTHNAMES[0]) assert_equal('January', Date::MONTHNAMES[1])