diff options
Diffstat (limited to 'java/src/json/ext/Parser.rl')
-rw-r--r-- | java/src/json/ext/Parser.rl | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/java/src/json/ext/Parser.rl b/java/src/json/ext/Parser.rl index 17ea303..28247ea 100644 --- a/java/src/json/ext/Parser.rl +++ b/java/src/json/ext/Parser.rl @@ -177,7 +177,13 @@ public class Parser extends RubyObject { * Returns the source string if no conversion is needed. */ private RubyString convertEncoding(ThreadContext context, RubyString source) { - return (RubyString)source.encode(context, info.utf8.get()); + RubyEncoding encoding = (RubyEncoding)source.encoding(context); + if (encoding == info.ascii8bit.get()) { + source.force_encoding(context, info.utf8.get()); + } else { + source = (RubyString) source.encode(context, info.utf8.get()); + } + return source; } /** |