Project

General

Profile

Actions

Bug #7964

open

Writing an ASCII-8BIT String to a StringIO created from a UTF-8 String

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

Status:
Assigned
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin10.8.0]
Backport:
[ruby-core:52921]

Description

=begin
In the following script, an ASCII-8BIT String is written to a StringIO created with a UTF-8 String without error. However, a << b or a + b will raise an exception, as will writing an ASCII-8BIT String to a File with UTF-8 external encoding.

  • $ cat file_enc.rb

    encoding: utf-8

    require 'stringio'

    a = "On a very cold morning, it was -8°F."
    b = a.dup.force_encoding "ascii-8bit"

    io = StringIO.new a
    io.write(b)
    p io.string.encoding

    File.open "data.txt", "w:utf-8" do |f|
    f.write a
    f.write b
    end

  • $ ruby2.0 -v file_enc.rb
    ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin10.8.0]
    #Encoding:UTF-8
    file_enc.rb:13:in write': "\xC2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from file_enc.rb:13:in block in '
    from file_enc.rb:11:in open' from file_enc.rb:11:in '

  • $ ruby1.9.3 -v file_enc.rb
    ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin10.8.0]
    #Encoding:UTF-8
    file_enc.rb:13:in write': "\xC2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from file_enc.rb:13:in block in '
    from file_enc.rb:11:in open' from file_enc.rb:11:in '
    =end

Actions

Also available in: Atom PDF