从数据库中取得数据显示时报 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. 一种可以避免数据迁移的分库分表scale-out扩容方式

    原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月 ...

  2. GDAL 遥感图像处理后的数据保存为图像文件的实现方法

    在遥感图像处理中,GDAL库不仅能读取和处理大部分的遥感图像数据,而且还能够实现图像处理后将数据保存为图像的功能. 本文就详细介绍如何将内存中的图像数据保存为.tif格式. 首先,遥感数据处理完,保存 ...

  3. Android--Matrix图片变换处理

    前言 本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放.旋转.位移.倾斜等.在最后将以一个简单的Demo来演示图片特效的变换. 本篇博客的主要内容: Matrix Matrix缩 ...

  4. Oracle Essbase入门系列(四)

    成员存储类型 除了大纲计算,维度成员的另一项重要属性是存储类型,存储类型决定维度成员相关单元格的物理存储方式.在维库中编辑成员的[Data Storage]属性,下拉菜单中可选的5种,再加上Share ...

  5. Scala 深入浅出实战经典 第41讲:List继承体系实现内幕和方法操作源码揭秘

    Scala 深入浅出实战经典 第41讲:List继承体系实现内幕和方法操作源码揭秘 package com.parllay.scala.dataset /** * Created by richard ...

  6. Navi.Soft30.产品.格式化.操作手册

    1系统简介 1.1功能简述 在软件开发过程中,我们对字符串操作最多. 尤其是Web开发时,数据交换一般采用JSON或XML.本产品作用是格式化各种常用字符串,目前包括:Json,Xml,Html,Sq ...

  7. 如何启动ResourceManager和NodeManager

    登录到bigtop1上,vagrant ssh bigtop1 将/usr/lib/hadoop/libexec/init-hdfs.sh文件内容替换为: #!/bin/bash -ex # # Li ...

  8. 15.6.8-sql小技巧

    取月头月尾: declare @someDay datetime,@firstDay datetime,@endDay datetime set @someDay='2015.2.2' ,) ,) s ...

  9. CSS3绘制旋转的太极图案(一)

        实现步骤: 基础HTML: <div class="box-taiji"> <div class="circle-01">< ...

  10. saiku之行速度优化(三)

    经历了前两轮优化之后,saiku由不可使用,优化到可以使用,不过在分析大量日志数据的时候,还有顿卡的感觉!继续观察背后执行的Sql,决定将注意力关注到索引上面! 日志的主要使用场景是:固定日期维度的数 ...