Project

General

Profile

Bug #7964

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

=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 <main>' 
  	 
	 from file_enc.rb:11:in `open' 
  	 
	 from file_enc.rb:11:in `<main>' 

 + $ 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 <main>' 
  	 
	 from file_enc.rb:11:in `open' 
  	 
	 from file_enc.rb:11:in `<main>' 
 =end 

Back