Issue #13124 has been updated by Eregon (Benoit Daloze).


naruse (Yui NARUSE) wrote:
> But it breaks command line utilities which handles encoding other than locale.

What kind of utilities use a different encoding than the locale?
Do you have an example?
It seems to me that if an utility needs to output in a different encoding than the locale,
then one needs to manually set the encoding of STDOUT anyway, so the default encoding conversion would not be an issue.


----------------------------------------
Feature #13124: Should #puts convert to external encoding?
https://bugs.ruby-lang.org/issues/13124#change-68127

* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
For instance:

    puts "?\x00\x42\x30".force_encoding(Encoding::UTF_16LE)
    ?B0

    puts "?\x00\x42\x30".force_encoding(Encoding::UTF_16LE).encode("utf-8")
    ?дв

The first result is surprising to me. It seems to treat the String as raw bytes and just "assume" they are displayable in the external encoding.

Should #puts re-encode the String to print in Encoding.default_external or the locale encoding?

    STDOUT.set_encoding(Encoding.find("locale"))

seems to do what I expect, but should that be the default?



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