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
次に、表示が必要なページで関数を呼び出すことができます.
注:トランスコードするフィールドがちょうど空の場合、上記のトランスコード方法を使用するとエラーが発生するので、以下のように修正します.
判断を加えればいい~~次にトランスコードを行い、
トランスコード前のコード:
トランスコード関数を呼び出した後のコード
@_@!! over~~
データベースから取得したデータ表示時報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~~