summaryrefslogtreecommitdiff
path: root/java/src/json/ext/Parser.rl
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/json/ext/Parser.rl')
-rw-r--r--java/src/json/ext/Parser.rl8
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;
}
/**