When I specify the internal_encoding option to GzipReader.open or GzipReader.new, this seems to override whatever was set by the external_encoding option.
Example:
When not specifying internal_encoding, we get the expected external_encoding:
Zlib::GzipReader.open('myfile.gz', external_encoding: 'iso-8859-1') do |gz|
puts gz.external_encoding
end
output:
ISO-8859-1
But with internal_encoding specified, external_encoding is changed:
Zlib::GzipReader.open('myfile.gz', external_encoding: 'iso-8859-1', internal_encoding: 'utf-8') do |gz|
puts gz.external_encoding
end
output:
UTF-8
This seems broken, right? I'm not getting the problem with File.open.
Additionally, I noticed GzipReader does not respond to internal_encoding:
Zlib::GzipReader.open('myfile.gz') do |gz|
puts gz.internal_encoding
end
This throws NoMethodError with message:
undefined method `internal_encoding' for #<Zlib::GzipReader:0x00007f4c616a4e10> (NoMethodError)
Did you mean? external_encoding
(Ruby version 3.3.1)
Hi!
When I specify the
internal_encoding
option toGzipReader.open
orGzipReader.new
, this seems to override whatever was set by theexternal_encoding
option.Example:
When not specifying
internal_encoding
, we get the expectedexternal_encoding
:output:
But with
internal_encoding
specified,external_encoding
is changed:output:
This seems broken, right? I'm not getting the problem with
File.open
.Additionally, I noticed
GzipReader
does not respond tointernal_encoding
:This throws
NoMethodError
with message:Regards, Olof