ruby -- 问题解决(三)编码错误导致无法显示(1)
从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT
或 incompatible character encodings: UTF-8 and ASCII-8BIT的错误
具体表现为:数据库中的中文不是乱码,取出来在页面显示时报编码错误。
原因是刚从数据库取出来的时候字符串是ASCII-8BIT,尽管已经在database.yml中设置encoding:utf-8但是无效。
已知有数据表Customers(id, name, phone)
表中的name在数据库中设置是UTF-8,它在数据库中的数据是中文,且数据库中的中文不是乱码
但是从数据库中读取出来时,编码错误! @_@?!
解决方案是: 在models文件夾中找到customer.rb文件 (注:ruby1.9,1.9以下没有force_encoding())
原来的代码是:
class Customer < ActiveRecord::Base
attr_accessible :name, :phone
end
通过是用get_name方法将从数据库读出来的name字段的值进行转码
修改customer.rb,代码如下:
class Customer < ActiveRecord::Base
def get_name
return self.name.force_encoding(Encoding.default_internal)
end
attr_accessible :name, :phone
end
注:转码的方法名是要进行转码的属性名前面加“get_”,如:要将name转码,方法名为get_name
接着将显示读出数据界面的代码进行修改,比如我的显示界面是在views文件夾下面customers中的index.html.erb
原来的代码是:
<% @customers.each do |customer| %>
……
<td><%= customer.name %></td>
……
<% end %>
修改后的代码,如下:
<% @customers.each do |customer| %>
……
<td><%= customer.get_name %></td>
……
<% end %>
参考链接:http://314858770.iteye.com/blog/687978
ruby -- 问题解决(三)编码错误导致无法显示(1)的更多相关文章
- ruby -- 问题解决(四)编码错误导致无法显示(2)
		
从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT或 incompatible character encodings ...
 - linux 关于Apache默认编码错误 导致网站乱码的解决方案
		
Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的"蝌蚪文"乱码问题 最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站 ...
 - 编码问题导致样式显示在IE中不正常
		
今天在做项目的时候,遇到样式显示不正常的问题,结果是因为用系统自带的notepad编辑器编辑文件时,编码格式被更改了.我们需要在Notepad++中,将编码格式改成Encode inUTF8 with ...
 - 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”
		
火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...
 - Python文件读取编码错误问题解决之(PyCharm开发工具默认设置的坑。。。)
		
刚接触Python学习,正准备做个爬虫的例子,谁知道代码一开始就遇到了一个大坑,狂汗啊. 问题是这样的:我通过代码爬取了博客园首页的HTML代码并存入到blog.txt文件当中,然后准备读取出来之后进 ...
 - python运行显示编码错误
		
python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...
 - 从库因为sql错误导致主从同步被中断的问题解决
		
从库因为sql错误导致主从同步被中断的问题解决:show slave status\G;看lasterror:看延迟多少秒,正常情况下是没有延迟的. 跳过错误的那条sql:SET GLOBAL SQL ...
 - 记一次python编码错误
		
摘要: 断断续续写python一段时间了,让我说python最令我头疼的问题,莫过于编码问题.最近做大论文,使用python再次出现编码报错.错误如下: "UnicodeEncodeErro ...
 - windows下编译java源文件的编码错误
		
import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...
 
随机推荐
- 匿名管道读取CMD回显信息
			
之前用了很坑爹的做法去读取了cmd命令的回显信息,现在发现了用匿名管道的实现方法,由于楼主没有学过Windows核心编程,找了一个代码来凑数 存下来以后研究 #include <windows. ...
 - Leetcode 101 Symmetric Tree 二叉树
			
判断一棵树是否自对称 可以回忆我们做过的Leetcode 100 Same Tree 二叉树和Leetcode 226 Invert Binary Tree 二叉树 先可以将左子树进行Invert B ...
 - PowerManager和WakeLock的操作步骤
			
① PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);通过 Context.getSystemServ ...
 - 用Wireshark提取WPA握手包
			
进入正文前,先来看一张截图,如图1,使用“aircrack-ng wpa.cap -w password.lst”命令后,程序会提示输入待破解网络的序号,此时只要提供一个序号即可.注意:1:命令中不需 ...
 - windows地址转发
			
netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.8.108 connectport=8080 把 ...
 - Python学习笔记(2):数据库访问
			
本来打算继续用Access的,但费了非常大的劲,还是没有搞定.回过头,发现使用sqlite,简单到令人发指.干脆,把C#的CommonCode往这边迁移,先把AccessDB搬过来再说. 类结构和C# ...
 - angular post表单
			
参数文章:http://angularjs.cn/A0qF angularjs中Post使用的是json的交互方法,一般服务器还没达到这个阶段,我们可以用回传统的&参数的方法: var myA ...
 - TaskHosting - 开发桌面工具原来还可以这么简单
			
由来 对于喜欢开发的我经常会写一些小工具,这些小工具多以功能为主,不要求漂亮.个性化的UI.但起码要保证使用方便,因此最基本的功能要有: GUI(图片用户界面) 程序配置的保存与读取(让用户在GUI上 ...
 - Mysql  如何设置字段自动获取当前时间
			
应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间: 2.在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意 ...
 - fresco Bitmap too large to be uploaded into a texture
			
fresco加载图片方法 布局文件引入 xmlns:fresco="http://schemas.android.com/apk/res-auto" <com.faceboo ...