昨日の続きを。
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.