Bug #7964
openWriting an ASCII-8BIT String to a StringIO created from a UTF-8 String
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.encodingFile.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:inwrite': "\xC2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from file_enc.rb:13:in
block in '
from file_enc.rb:11:inopen' 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:inwrite': "\xC2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from file_enc.rb:13:in
block in '
from file_enc.rb:11:inopen' from file_enc.rb:11:in
'
=end