diff --git a/core/src/main/java/org/jruby/RubyString.java b/core/src/main/java/org/jruby/RubyString.java index 0226445d4f2..6bbb16aee80 100644 --- a/core/src/main/java/org/jruby/RubyString.java +++ b/core/src/main/java/org/jruby/RubyString.java @@ -5963,8 +5963,11 @@ public IRubyObject encode(ThreadContext context, IRubyObject toEncoding, @JRubyMethod public IRubyObject force_encoding(ThreadContext context, IRubyObject enc) { + return force_encoding(context, context.runtime.getEncodingService().getEncodingFromObject(enc)); + } + + private IRubyObject force_encoding(ThreadContext context, Encoding encoding) { modify19(); - Encoding encoding = context.runtime.getEncodingService().getEncodingFromObject(enc); associateEncoding(encoding); clearCodeRange(); return this; @@ -5982,11 +5985,9 @@ public IRubyObject ascii_only_p(ThreadContext context) { @JRubyMethod public IRubyObject b(ThreadContext context) { - Encoding encoding = ASCIIEncoding.INSTANCE; - RubyString dup = (RubyString)dup(); - dup.associateEncoding(encoding); - dup.clearCodeRange(); - return dup; + RubyString dup = strDup(context.runtime); + + return dup.force_encoding(context, ASCIIEncoding.INSTANCE); } // MRI: str_scrub arity 0