zoukankan      html  css  js  c++  java
  • ruby -- 问题解决(四)编码错误导致无法显示(2)

    从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT
    或 incompatible character encodings: UTF-8 and ASCII-8BIT的错误
    具体表现为:数据库中的中文不是乱码,取出来在页面显示时报编码错误。
    原因是刚从数据库取出来的时候字符串是ASCII-8BIT,尽管已经在database.yml中设置encoding:utf-8但是无效。
    在《ruby -- 问题解决(三)编码错误导致无法显示(1)》中介绍的方法需要在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~~

     
  • 相关阅读:
    解决eclipse maven 项目重新下载包这个问题
    Python猴子补丁
    浅谈服务治理与微服务
    微服务
    Tornado部署与运行
    tornado部署
    【测试】Gunicorn , uWSGI同步异步测试以及应用场景总结
    以gevent(协程) 方式跑uwsgi服务
    uwsgi配置理解
    python Web开发你要理解的WSGI & uwsgi详解
  • 原文地址:https://www.cnblogs.com/lmei/p/3224862.html
Copyright © 2011-2022 走看看