Project

General

Profile

Actions

Bug #5568

closed

IO#set_encoding ignores internal when the same as external only when specified as "ext:int"

Added by brixen (Brian Shirai) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.0.0dev (2011-10-26 trunk 33526) [x86_64-darwin10.8.0]
Backport:
[ruby-core:40727]

Description

When passing two encoding objects that are the same to IO#set_encoding, both external and internal encodings for the IO instance are set.

However, when passing "ext:int", the internal encoding is not set if the same as external, but a warning is issued. Further, when passing "ext", "int", the internal encoding is not set and no warning is issued.

sasha:rubinius brian$ ruby2.0 -v -e 'p STDOUT.set_encoding("utf-8:utf-8").internal_encoding'
ruby 2.0.0dev (2011-10-26 trunk 33526) [x86_64-darwin10.8.0]
-e:1: warning: Ignoring internal encoding utf-8: it is identical to external encoding utf-8
nil

sasha:rubinius brian$ ruby2.0 -v -e 'p STDOUT.set_encoding(Encoding::UTF_8, Encoding::UTF_8).internal_encoding'
ruby 2.0.0dev (2011-10-26 trunk 33526) [x86_64-darwin10.8.0]
#Encoding:UTF-8

sasha:rubinius brian$ ruby2.0 -v -e 'p STDOUT.set_encoding("utf-8", "utf-8").internal_encoding'
ruby 2.0.0dev (2011-10-26 trunk 33526) [x86_64-darwin10.8.0]
nil

Is there a reason for these differences?

Thanks,
Brian


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #6324: Spurious/incorrect warning on File.open with internal_encoding specified in string mode to duplicate external_encodingClosednaruse (Yui NARUSE)04/20/2012Actions

Updated by naruse (Yui NARUSE) over 10 years ago

  • Category set to M17N
  • Status changed from Open to Assigned
  • Assignee set to naruse (Yui NARUSE)

Updated by naruse (Yui NARUSE) over 10 years ago

  • Status changed from Assigned to Rejected

Current behavior is correct.
It means the specifying internal encoding won't effect until external encoding is changed.

Updated by brixen (Brian Shirai) over 10 years ago

Why is there a difference in behavior when the arguments are different? In other words, ("ext:int") and (ext, int) do not have the same behavior. That's really the point of this ticket.

Updated by naruse (Yui NARUSE) over 10 years ago

  • Status changed from Rejected to Assigned
Actions #5

Updated by naruse (Yui NARUSE) over 10 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r34997.
Brian, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • io.c (io_encoding_set): always warn if external encoding and internal
    encoding are identical. [ruby-core:40727] [Bug #5568]
Actions

Also available in: Atom PDF