Feature #13532
closedEnable :encoding key or open-uri (open()) similar as to how File.read() and File.readlines() already allow for
Description
Hello ruby core team and everyone else.
I lately had some odd behaviour and mixing of Encodings in my
scripts.
I had a better look and realized that open-uri would return
UTF-8 whereas my other scripts would use another encoding. So
far so good, no big deal, I can just change the encoding. But
I was not aware of this.
I then looked at the documentation and found it to be lacking:
https://ruby-doc.org/stdlib-2.4.1/libdoc/open-uri/rdoc/OpenURI.html
Compare this to File.readlines():
https://ruby-doc.org/core-2.4.1/IO.html#method-c-readlines
File.readlines() also tells you how many arguments can be
passed.
(1) So my first suggestion is - could some kind soul please also
enable this for open-uri?
The major reason for me filing this feature request, is about
encoding support though, via open-uri.
File.open() and File.readlines() both allow an :encoding key
to be passed. This is very nifty, I use it a lot and it works
very well.
open-uri or rather its open() functionality, allows you to
pass in a Hash but this Hash has no :encoding key.
Example:
open("http://www.ruby-lang.org/", encoding: 'ISO-8859-1')
Error:
ArgumentError: unrecognized option: encoding
Could this perhaps be added for symmetry and consistency,
so that open() from open-uri will behave like File.read()
and File.readlines() would? E. g. an example for the latter
would be.
File.readlines('foobar.rb', :encoding => 'ISO-8859-1')
The very same syntax could also be used for open() of
open-uri.
Thanks for reading!