Issue #14863 has been updated by shevegen (Robert A. Heiler).


Interesting.

I kind of agree with you - that surprised me. Perhaps there is an
explanation for it, but perhaps it is a bug. Either way, I think
if it is a bug, it should obviously be fixed; and if it is not
a bug, perhaps the explanation for this behaviour could be 
explained in some detail.

I just tested with this snippet stored in a .rb file:

"

    #!/System/Index/bin/ruby -w
    # Encoding: ISO-8859-1
    # frozen_string_literal: true
    # =========================================================================== #
    puts [].join.encoding

    joined = ['a','b','c'].join

    puts joined.encoding

    puts 'abc'.encoding"

The above generated three ouputs, being:

    US-ASCII
    ISO-8859-1
    ISO-8859-1

I sort of have to agree with Xavier. I think
the first result, for an empty [], is awkward
in particular when I already specified ANOTHER
encoding in the shebang - the other two strings
work fine and honour the shebang entry. (The
third one was just for testing; second line
was the result of a .join on an Array that
has some strings).

[].join probably creates a new, empty string,
but I think that new string should default to 
the main encoding (e. g. UTF-8) - or the one
specified in the shebang directive (if
applicable). So I think it is most likely a
bug or perhaps just an oversight. I myself 
never ran into this issue in my code so far.


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

* 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>