Rails4.0--エンコーディングエラーによる表示不可(2)

5115 ワード

Rails4.0--エンコーディングエラー(2)
データベースから取得したデータ表示時報incompatible character encodings:GBK and ASCII-8 BITまたはincompatible character encodings:UTF-8 and ASCII-8 BITのエラー
具体的には、データベースの中の中国語は文字化けしていないので、取り出してページに時報符号化エラーを表示します.
データベースから取り出したばかりの頃は文字列がASCII-8 BITだったので、database.ymlでencoding:utf-8を設定しましたが無効です.
『Rails 4.0--エンコーディングエラー(一)』(リンク:
http://www.cnblogs.com/lmei/p/3205504.html)で紹介する方法はmodelsフォルダ内の複数が必要である.rbファイルを修正すると、煩雑に見えます.次の方法を説明します.
helpersファイルで変更するファイルを見つけます.たとえば、admin_helper.rb
次に、トランスコード関数をカスタマイズします.
def encodingChange
1 module AdminHelper

2   def encodingChange(attr)

3     return attr.force_encoding(Encoding.default_internal)

4   end

5 end

次に、表示が必要なページで関数を呼び出すことができます.
注:トランスコードするフィールドがちょうど空の場合、上記のトランスコード方法を使用するとエラーが発生するので、以下のように修正します.
1 module AdminHelper

2   def encodingChange(attr)

3     if !attr.nil?  

4       return attr.force_encoding(Encoding.default_internal)

5     end

6   end

7 end

判断を加えればいい~~次にトランスコードを行い、
トランスコード前のコード:
1  <% @admins.each do |admin| %>

2       ……

3         <td><%= admin.companyName %></td>

4        ……

5 <% end %>

トランスコード関数を呼び出した後のコード
1  <% @admins.each do |admin| %>

2       ……

3         <td><%= encodingChange(admin.companyName) %></td>

4        ……

5 <% end %>

@_@!! over~~