ruby -- 问题解决(四)编码错误导致无法显示(2)
2013-07-30 12:12
369 查看
从数据库中取得数据显示时报 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
module AdminHelper def encodingChange(attr) return attr.force_encoding(Encoding.default_internal) end end
接着就可以在需要显示中的页面中调用该函数啦!
注:如果要转码的字段刚好为空的话,使用上面的转码方法会报错,所以修改如下,
module AdminHelper def encodingChange(attr) if !attr.nil? return attr.force_encoding(Encoding.default_internal) end end end
加个判断即可~~ 接下来进行转码,
转码之前的代码:
<% @admins.each do |admin| %> …… <td><%= admin.companyName %></td> …… <% end %>
调用转码函数之后的代码
<% @admins.each do |admin| %> …… <td><%= encodingChange(admin.companyName) %></td> …… <% end %>
@_@!! over~~
相关文章推荐
- ruby -- 问题解决(三)编码错误导致无法显示(1)
- ruby 文件中文编码问题 导致passenger start错误的解决方法
- 解决由于升级的Win10周年版本后Oracle VM VirtualBox无法运行导致的eNSP V390里面的路由器和防火墙等设备无法启动的问题(错误代码40)
- ueditor的工具栏显示乱码解决方法 小问题.. 是你的页面编码与语言包js编码不符所导致的
- 解决在Win7下使用schtasks命令显示 “错误:无法加载列表资源” 的问题
- Dynamics CRM2016 解决C#调用web api报错无法显示错误详情的问题
- ThinkPHP3出现“页面无法显示”的330错误问题解决
- 关于CSS中内层使用float导致外层的背景无法显示的问题的解决
- Ubuntu安装界面下方无法显示问题,导致无法操作解决办法
- 解决Python print 输出文本显示 gbk 编码错误问题
- WordPress中修改固定链接导致无法显示文章内容的问题的解决办法
- 关于CSS中内层使用float导致外层的背景无法显示的问题的解决方法
- 创建HTML文件保存由于编码问题导致内容无法显示的处理办法
- linux显示git commit id,同时解决insmod模块时版本不一致导致无法加载问题
- 解决CMFCMenuButton无法显示右边箭头以及多字节编码下堆破坏的问题
- Ubuntu 锁定屏幕后即使输入正确密码也被提示密码错误导致无法解锁 问题的解决
- 文档库创建的子文件夹的URL显示为 http://[机器名]/.... 导致无法正常访问的问题解决办法
- Nginx反向代理导致图片、JS及CSS样式表无法显示问题解决
- django 解决css,js文件304导致无法加载显示问题
- 解决台式机(英伟达GTX1070显卡)安装Ubuntu系统显示错误导致安装失败的问题