从数据库中取得数据显示时报 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)的更多相关文章

  1. ruby -- 问题解决(四)编码错误导致无法显示(2)

    从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT或 incompatible character encodings ...

  2. linux 关于Apache默认编码错误 导致网站乱码的解决方案

    Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的"蝌蚪文"乱码问题   最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站 ...

  3. 编码问题导致样式显示在IE中不正常

    今天在做项目的时候,遇到样式显示不正常的问题,结果是因为用系统自带的notepad编辑器编辑文件时,编码格式被更改了.我们需要在Notepad++中,将编码格式改成Encode inUTF8 with ...

  4. 火狐firefox提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式。”

    火狐firefox浏览器打开网也是时提示“内容编码错误 无法显示您尝试查看的页面,因为它使用了无效或者不支持的压缩格式.” 今早一来打开用PHPCMS做的网站时就提示这个错误,用其他浏览器打开提示的是 ...

  5. Python文件读取编码错误问题解决之(PyCharm开发工具默认设置的坑。。。)

    刚接触Python学习,正准备做个爬虫的例子,谁知道代码一开始就遇到了一个大坑,狂汗啊. 问题是这样的:我通过代码爬取了博客园首页的HTML代码并存入到blog.txt文件当中,然后准备读取出来之后进 ...

  6. python运行显示编码错误

    python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...

  7. 从库因为sql错误导致主从同步被中断的问题解决

    从库因为sql错误导致主从同步被中断的问题解决:show slave status\G;看lasterror:看延迟多少秒,正常情况下是没有延迟的. 跳过错误的那条sql:SET GLOBAL SQL ...

  8. 记一次python编码错误

    摘要: 断断续续写python一段时间了,让我说python最令我头疼的问题,莫过于编码问题.最近做大论文,使用python再次出现编码报错.错误如下: "UnicodeEncodeErro ...

  9. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

随机推荐

  1. iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

    iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...

  2. SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引(转载)

    很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可 ...

  3. vs2010 使用vs online账号 需要安装的插件

    VS10SP1-KB2662296.exe http://pan.baidu.com/s/1qWDpEG0 vs2010 需要先升级到SP1

  4. 如何修改 EM12c 中 SYSMAN 用户的密码?

    以下内容全部转自:http://www.chenjunlu.com/2013/04/how-to-modify-the-password-for-sysman-of-em-12c-cloud-cont ...

  5. Discuz!开发手册

    如何使用Discuz开发手册? 1.首先建议你了解Discuz目录结构-全局篇 通过对目录结构的了解,会在以后的创作道路上提供坚实的基础! 2.你还需要了解Discuz! X3.1数据字典 3.创建自 ...

  6. Fixed error when submitting assignments in Machine Learning on Coursera

    Environment: OS: OSX 10.8.5 Matlab: R2013a(8.1.0.604) 64bit   How to fix: In file submit.m, line 129 ...

  7. spring中配置了事务,数据业务层捕获异常,事务配置不成功?

    原理:spring aop  异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常 ...

  8. 修改windows系統下xampp中apache端口被其他程式占用的問題

    windows 7安裝後啟動xampp, 提示port 443 被其他程式占用. 網上查找解決方案: http://stackoverflow.com/questions/21182512/how-t ...

  9. 804 pretest 解题

    Answers with Explanations 1. c) s1 and s2 not equal s1 and s3 equal JVM sets a constant pool in whic ...

  10. Activity跳转时生命周期跟踪

    1. 步骤1(打开First Activity):经过onCreate.onStart.onResume后First Activity就展现啦: 2. 步骤2(跳转至Second Activity): ...