GzipReader: internal_encoding option overwrites external_encoding
まだ誰も着手していません。
評価
調査の方向性
まず、Ruby 3.3.1 で issue にある 2 つの GzipReader の例を再現し、その encoding の挙動を File.open と比較します。zlib リポジトリ内の GzipReader API と encoding の処理を追跡します。external_encoding が internal_encoding も指定された場合に ISO-8859-1 のまま維持され、internal_encoding の期待される挙動が確立されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
(Ruby version 3.3.1)
Hi!
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
Regards,
Olof
- 主要言語
- C
- スター
- 73
- フォーク
- 40
- 平均マージ
- 10時間 32分
- マージ済み PR(30日)
- 2
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
ruby/zlib のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
似ている issue
-
os:linux
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
mpv-player/mpv#18510 · コメント 2 件 ·
-
internal.h中,漏掉了1个定义。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 95/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
kovidgoyal/kitty#10516 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 80/100