=begin
h1. #Multilingualization (m17n) inconsistencies between Ruby1.8 and Ruby1.9
* String class ** Ruby 1.8: Array of bytes + include Enumerable => String can be used like an Array) + 'String#[0]' returns ascii code ** Ruby 1.9: encoded characters (not Array but [] method is available) + String class behavior changes depending on the encoding + 'String#[0]' does not return ascii code (ex. use String#unpack('C*')[0], String.bytes.to_a[0]) + not include Enumerable module (ex. String#each does not work) + we cannot use binary data (byte data) directly through String class + we have to set 'ascii-8bit' as an encoding for binary data Magic comment * we have to write encoding (magic comment) in each script * 'File.read' cannot read binary file anymore (Ruby 1.8 can) * ex. instead of 's = File.read("input.dat")' s = open("input.dat","rb"){|f| f.read} * Careful points from 1.8 to 1.9 (encoding) o String#[0] does not return ascii code (this does not output an error, the behavior changes) o Put magic comment (encoding) if there are non-ascii characters in source code (in most of the cases, an error comes) o Pay attention to the encoding when we use String class, binary data, regular expression o We cannot use Enumerable methods for a String instance
=end