Issue #14863 has been updated by jeremyevans0 (Jeremy Evans).


xsimov (Xavier Sim) wrote:
> Calling
> ~~~
> irb(main):001:0> [].join.encoding
> => #<Encoding:US-ASCII>
> ~~~ 
> returns an empty string and that empty string is always in US-ASCII encoding.
> 
> The expected result is that the returned empty string would be in UTF-8 since it seems to be the default for Ruby strings since 2.0.

UTF-8 is the default for literal strings, not the default for all strings.  Note that strings will automatically change their encoding from US-ASCII to UTF-8 if a UTF-8 string that uses non-ASCII characters is appended to them.

~~~
$ ruby -e 'p ([].join << "\u1234").encoding'
#<Encoding:UTF-8>
~~~

----------------------------------------
Bug #14863: Array#join with empty array returns empty string always in US-ASCII encoding
https://bugs.ruby-lang.org/issues/14863#change-72585

* Author: xsimov (Xavier Sim)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.4.2
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
Calling
~~~
irb(main):001:0> [].join.encoding
=> #<Encoding:US-ASCII>
~~~ 
returns an empty string and that empty string is always in US-ASCII encoding.

The expected result is that the returned empty string would be in UTF-8 since it seems to be the default for Ruby strings since 2.0.





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>