Ruby1.8.7+Rails2.1.1→Ruby1.9.1+Rails2.3.2(その2)

昨日の続きを。

7. incompatible character encodings: ASCII-8BIT and UTF-8
  • ASCII-8BIT外の文字を使っているソースの先頭に「#coding: utf-8」をつけた
  • patchをあててみた
  • <%= collection_select … %>で展開される文字がASCII-8BITの外だと「incompatible character encodings: ASCII-8BIT and UTF-8」 ← いまココ 以下のようなエラーがでます。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
     Showing app/views/layouts/application.html.erb where line #45 raised:
    
    incompatible character encodings: ASCII-8BIT and UTF-8
    
    Extracted source (around line #45):
    
    42: </div>
    43: 
    44: <div class="content" id="content">
    45:   <%= yield %>
    46: </div>
    47: 
    48: </body>
    DB(sqlite3)から取ってきた文字列に対してencodingメソッドを呼び出してみると…
    1
    2
    3
    
        @categories.each do |c|
          p c.name.encoding 
        end
    “ASCII-8BIT”でした。database.ymlのencodingの指定が適用されないらしい。エンコーディングをforce_encodingで変えてやると、エラーは出なくなりました。
    1
    2
    3
    4
    
        @categories.each do |c|
          p c.name.encoding
          c.name = c.name.force_encoding('utf-8')
        end

sqlite3のアダプタがNGなのかと思い、MySQL + MySQL/Ruby(2.8.1)で試してみましたが、やはり同じエラーになります。2.8.1はRuby1.9.1に対応していると書いてあるのですが、M17Nは未対応なのかな。 Ruby/MySQL 3.0.0 alphaの方曰く、

1
2
MySQL/Ruby と比べて遅かったり、非互換があったりしますが、Ruby 1.9 の M17N がちゃんと扱えるのはこれだけなので、Ruby 1.9
な人はこれを使ってみるのもいいと思います。
やはり厳しいみたい。

Sorry, comments are closed for this article.