diff --git a/ChangeLog b/ChangeLog index b0930a631a..1e09121d7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 28 11:24:49 2008 NAKAMURA Usaku + + * parse.y (parser_str_new): encoding of UTF-8 literal string in + US-ASCII script is UTF-8. [ruby-dev:33406] + Mon Jan 28 10:25:59 2008 NAKAMURA Usaku * test/ruby/test_m17n.rb (test_magic_comment): add test. diff --git a/parse.y b/parse.y index 19b8ba658c..721e88cab2 100644 --- a/parse.y +++ b/parse.y @@ -4848,7 +4848,7 @@ parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *e if (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT) { rb_enc_associate(str, rb_usascii_encoding()); } - else if (enc0 == rb_usascii_encoding()) { + else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) { rb_enc_associate(str, rb_ascii8bit_encoding()); } } diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index c503cdbea3..3423a1d58a 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -153,6 +153,7 @@ class TestM17N < Test::Unit::TestCase def test_utf8_literal assert_equal(Encoding::UTF_8, "\u3042".encoding, "[ruby-dev:33406] \"\\u3042\".encoding") + assert_raise(SyntaxError) { eval(a('\u3052\x80')) } end def test_string_mixed_unicode