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 ...
随机推荐
- ES6转码器babel的使用
1. 进入ES6的项目,执行 npm init // 初始化package.json 2. 在与package.json同一目录下编写配置文件 .babelrc { "presets&quo ...
- Goodchild教授关于GIS的四大预测的不同看法
Goodchild教授的关于GIS的4个未来发展的预测不断有人在微信朋友圈里转发,虽然现在做的工作GIS只是一个基本的工具之一了,但对这4个预测还是有不少不同看法和一点自己的意见. Goodchild ...
- 努力学习 HTML5 (2)—— 元素的增和删
HTML5 放松了某些规则,HTML5 的制定者想让这门语言更紧密地反映浏览器的现实. 放松的规则 不要求包含 <html>.<head> 和 <body> 元素. ...
- TCP : two different sockets sharing a port?
A server socket listens on a single port. All established client connections on that server are asso ...
- android通话时第二通电话呼叫等待提示音音量大小
callnotifier.java public void run() { ...... switch (mToneId) { case TO ...
- SSIS连接Oracle遇到的问题
Fuck!一大早上来到办公室发现 E盘被客户无缘无故干掉了,心中一万只......路过,but 接下来还是要解决问题 冷静!冷静!冷静! 问题还是要解决的 于是乎去测试开发环境 发现DW库和Repo ...
- memcached命令
memcached相对于redis来说,简直简单太多,命令也少很多,一般应用都是使用redis,但了解一下也还是不错的. 具体命令和用法很参见:http://www.runoob.com/memcac ...
- .net微信公众号开发——模板消息
作者:王先荣 本文介绍微信公众号中的模板消息,包括以下内容:(1)TemplateMessage类简介:(2)设置所属行业:(3)获得模板id:(4)发送模板消息:(5)接收推送模板消息发送结果 ...
- drupal7 Views Slideshow 简单教程
一.下载安装(略) 二.内容类型建立(过程略,首页幻灯),字段建立(过程略)主要有2个字段,图片字段 和 指向链接字段 三.view 1.建立一个新的view,名称为frontbanner 显示为内容 ...
- Java模式(适配器模式)【转载】
转载地址: http://blog.csdn.net/elegant_shadow/article/details/5006175 今天看了下Java中的适配器模式,以下就来小做下总结和谈谈感想,以便 ...