Issue #5287 has been updated by Yui NARUSE.


Adam Prescott wrote:
> On Wed, Sep 7, 2011 at 12:20 AM, Adam Prescott <adam / aprescott.com> wrote:
>  > Since "#{a}" is actually a new string, doesn't it make sense that its
>  > encoding should be the default internal encoding? I can see "#{a}" being
>  > used with the encoding change actually expected.
>  
>  I guess "no" is the answer?

default_internal doesn't effect on this situation.
"#{a}" is considered as ` s = a.to_s
So "no" is the answer, s's encoding depends a's encoding.

>  What about "foo#{a}bar"? Would that have the same encoding result as
>  "#{a}", or is the latter just a special case? (Either choice seems
>  counterintuitive to me.)

"foo#{a}bar" is considered as ` s = "foo"; s.concat(a.to_s); s.concat("bar").
So the resulted s's encoding depends "foo".
----------------------------------------
Backport #5287: 1.9.3 - Interpolation in a string causes the string's encoding to be set to ASCII-8BIT
http://redmine.ruby-lang.org/issues/5287

Author: Jon Leighton
Status: Closed
Priority: High
Assignee: Yui NARUSE
Category: 
Target version: 


There appears to be a bug with the encoding of interpolated strings on 1.9.3.

Here is a comparison of versions:

1.9.2
-----

ruby-1.9.2-p290 :001 > a = ""
 => "" 
ruby-1.9.2-p290 :002 > a.encoding
 => #<Encoding:UTF-8> 
ruby-1.9.2-p290 :003 > "#{a}".encoding
 => #<Encoding:UTF-8> 

1.9.3-head
----------

ruby-1.9.3-head :004 > a = ""
 => "" 
ruby-1.9.3-head :005 > a.encoding
 => #<Encoding:UTF-8> 
ruby-1.9.3-head :006 > "#{a}".encoding
 => #<Encoding:ASCII-8BIT> 

ruby-head
---------

ruby-head :003 > a = ""
 => "" 
ruby-head :004 > a.encoding
 => #<Encoding:UTF-8> 
ruby-head :005 > "#{a}".encoding
 => #<Encoding:UTF-8> 


-- 
http://redmine.ruby-lang.org