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

Backport deleted (1.9.3: UNKNOWN, 2.0.0: UNKNOWN)
Status changed from Feedback to Closed

As Ruby 3.0 uses UTF-8 for ARGV, this is fixed.

With modified example:

```ruby
puts "Encoding of argument is reported as #{ARGV[0].encoding} and as #{ARGV=
[0].valid_encoding? ? "valid" : "invalid"}."
puts "Let us inspect the a-tilde argument: #{ARGV[0].dump}"
puts "Let us inspect the a-tilde from UTF-8 source code transcoded into CP8=
50: #{"=E3".encode("CP850").dump}"
puts "Let us inspect the a-tilde from UTF-8 source code transcoded into ISO=
-8859-1: #{"=E3".encode("ISO-8859-1").dump}"
```

output is:

```
ruby t.rb =E3
Encoding of argument is reported as UTF-8 and as valid.
Let us inspect the a-tilde argument: "\u00E3"
Let us inspect the a-tilde from UTF-8 source code transcoded into CP850: "\=
xC6"
Let us inspect the a-tilde from UTF-8 source code transcoded into ISO-8859-=
1: "\xE3"
```

----------------------------------------
Bug #9016: String#encoding is lying?
https://bugs.ruby-lang.org/issues/9016#change-90620

* Author: renatosilva (Renato Silva)
* Status: Closed
* Priority: Normal
* Assignee: cruby-windows
* ruby -v: ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
----------------------------------------
Please see attached test case.

If you try opening a file using a CP850 (possibly others) path which was pa=
ssed as command line argument, you are not able at all, unless you encode t=
he argument into its very own reported encoding (CP850), and from some enco=
ding different than that (in my case, both ISO-8859-1 and Windows-1252 work=
ed). It is just like ARGV[0].encoding is lying!

Before, in Ruby 1.8, File.open would work just fine. I have a script that j=
ust stopped working, till I found the above workaround. This seems to me li=
ke a bug. I would expect Ruby to just do its best in order to convert user =
input into the required encodings for file APIs and such. Meaning I would n=
ot like for a possible fix to require any code migration from 1.8 to 1.9+ a=
t all.

---Files--------------------------------
encoding-lying.rb (1.04 KB)
encoding-lying-reduced.rb (761 Bytes)


-- =

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

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