ruby程序中文乱码问题解决方法

原创 2007年09月23日 11:01:00

这个是从网上找的,我遇到的用红色标识

环境:
。MySQL 5.0,MySQL的环境配置为UTF8,建表也全部使用UTF8。
。IE6.0、FireFox 2.0.2
。Ruby 1.8.5 + rails 1.2.3

错误现象:
。用MySQL Query Browser查看MySQL数据,中文显示正常。
。页面显示为乱码,原来是中文的地方都变成了一个长方块
。手工调整浏览器的页面编码,可以使用页面正常显示。但刷新后又是乱码。

解决方法:修改config/database.yml,加入一句编码设置如下。

 

development:
  adapter: mysql
  database: chensite_development
  encoding: utf8
  username: root
  password: 
123456
  host: localhost

 

(这个我试了,程序中的中文乱码)是这样的)这时从数据库读取的数据显示正常了,但*.rhtml里的原中文却显示变成了乱码。据说将*.rhtml用记事本重新保存为utf-8格式可以解决,而我是用Radrails,右击项目,在它的属性页的文本文件编码(info)项的text file encoding改为UTF-8。这时*.rhtml文件里的中文会变成乱码,所以最好备份一下,然后将备份的文件内容一个个的复制粘贴过来。致此终于完美解决了中文乱码问题。


注:

1。有些文章说要修改application.rb,在before_filter加入字符过滤代码。我以前也试过,可行。但我觉得还是修改database.yml来得简单一些。


2。有些文章说要同时在*.rhtml里加上如下编码设置。我发现这一句可加可不加,对页面编码显示没有任何影响。
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />


3。还有的人说修改environment.rb加入两行 $KCODE = 'u' 和 require 'jcode' 。这里似乎没有必要。也许这是老版Rails的解决方法。

 

4。有的人说在建表的时候不能用InnoDB,但我的建表语句如下,是用InnoDB。没有发现问题。

create table modules (
 id             
int           not null auto_increment,
 ..........

 expanded       tinyint(
1)    default 0,
 primary key (id)
)ENGINE
=InnoDB DEFAULT CHARSET=utf8;

 

3、修改ApplicationController 如下:
class ApplicationController < ActionController::Base

    def configure_charsets
      # @response.headers["Content-Type"] = "text/html; charset=utf-8"
      suppress(ActiveRecord::StatementInvalid) do
        ActiveRecord::Base.connection.execute 'SET NAMES utf8'
      end
    end

end

 

5、关于中文字符串的问题可以用

require 'iconv' 库, 然后执行

Iconv.conv("utf8","gb2312","string") #把字符由gb2312转换为UTF8

6、又看到一个设置编码的方法(不过还没试过,先记下来)

在config/enviroment.rb 最后面增加一行
$KCODE="utf8"  

ruby字符转码(包括不限于中文)

ruby中使用iconv转换编码,如下可以将GBK编码的字符串,转换为UTF-8编码的字符串Iconv.conv(UTF-8,GBK,value) #编码结果同下面的...cmd下,iconv 命令也...
  • kenera
  • kenera
  • 2008年04月09日 17:30
  • 2830

Ruby on Rails 学习:解决中文乱码问题

  初学Rails,简单的做了一个例子,发现存在中文问题。 大致中文问题归类如下:         1、页面无法显示中文,产生中文乱码         2、Mysql数据库采用utf8后,页面采用ut...
  • fuyangchang
  • fuyangchang
  • 2007年11月03日 13:54
  • 2060

解决JSP中文乱码问题

原文:http://www.cnblogs.com/chengkai/articles/2171848.html 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把J...
  • luoweifu
  • luoweifu
  • 2014年03月25日 23:46
  • 4056

JS中文转换(UTF-8),中文乱码解决办法,url传递中文乱码解决

转自:http://jun1986.iteye.com/blog/1056732 js合成url时,如果参数是中文,传到struts2中会乱码,解决办法如下: 1.js文件中使用encod...
  • zhangge360
  • zhangge360
  • 2016年07月19日 12:06
  • 9797

URL地址中的中文乱码问题的解决

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息。乱码问题就此产生了,该如何解决呢?且听本文详细道来。...
  • blueheart20
  • blueheart20
  • 2015年02月12日 20:15
  • 52698

Ruby官方文档翻译(Ruby官方文档中文版)

说明本文试图翻译Ruby官方文档,ruby版本:2.3.0,官方文档参考:http://ruby-doc.org/core-2.3.0/。进度1,Object类正文约定object 对象 clas...
  • liuk10
  • liuk10
  • 2016年03月27日 21:50
  • 491

页面get请求 中文参数方法乱码问题

地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。   js中编码有escape(),e...
  • renminzdb
  • renminzdb
  • 2015年01月05日 14:12
  • 33613

java编码问题(中文乱码的原因)

现象       前段时间有个需求:应用appA将商品快照保存在本地日志文件itemSnap.log中,中间插件负责将日志文件的内容放到队列中,应用appB获取队列中的内容后持久化到HBase。 在H...
  • cuidiwhere
  • cuidiwhere
  • 2013年12月15日 22:02
  • 2583

jquery serialize传中文乱码解决方法

jquery form 表单.serialize()序列化后中文乱码 经过一天的时间终于解决了! 一开始的时候我并不知道乱码问题是jquery引起的! 我以为是后台转码的时间出错了! 最后在网络上到了...
  • zhou1672
  • zhou1672
  • 2015年09月25日 12:03
  • 3244

Qt 5 中解决中文乱码的方法

Qt 5 中解决中文乱码的方法在 Qt 4 的时代,解决中文乱码挺麻烦。要考虑用的是什么编译器,具体的可以参考下面这篇文章: http://blog.csdn.net/brave_heart_lxl...
  • liyuanbhu
  • liyuanbhu
  • 2017年05月21日 11:47
  • 3819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ruby程序中文乱码问题解决方法
举报原因:
原因补充:

(最多只允许输入30个字)