Project

General

Profile

Bug #10417

IO#set_encoding without int_enc doesn't keep current internal encoding

Added by usa (Usaku NAKAMURA) about 5 years ago. Updated about 5 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
[ruby-dev:48685]

Description

bugかfeatureか迷ったんですが、とりあえずbugで。

IO#set_encodingを1引数で呼び出したとき、つまりexternal encodingのみを指定した場合、internal encodingはnilが指定されたとみなされ、Encoding.default_inernalが設定されます。
従って、もともとこのIOにinternal encodingが設定されていた場合、それが上書きされてしまいます。
internal encodingを指定せずに呼び出した場合は、現在の値を保持すべきではないでしょうか?


Related issues

Related to Ruby master - Bug #10418: REXML's encoding is broken if reading UTF-16 XML and Encondig.default_internal is setClosed10/22/2014Actions

History

Updated by usa (Usaku NAKAMURA) about 5 years ago

  • Related to Bug #10418: REXML's encoding is broken if reading UTF-16 XML and Encondig.default_internal is set added

Updated by naruse (Yui NARUSE) about 5 years ago

  • Target version changed from 2.2.0 to Next Major

fptr.encs.enc と fptr.encs.enc2 って不可分なものな気がするのと、
set_encoding というそれまでの前提が覆ってる状況で前の状態を尊重する理由をあんまり感じないので、
現在の値を保持するべきだとはあまり思いません。

そもそも set_encoding(ext_enc, int_enc, opts) の引数たちと内部の状態に若干解離があるとか、
optsは吹っ飛ばさざるを得ないので、int_encも飛ばしていいんじゃないとか、
そもそもset_encoding()って位置から設定し直すメソッドな雰囲気を感じている、とか。

Also available in: Atom PDF