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