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中文乱码

在文件头加上#encoding=UTF-8,示例: #encoding=UTF-8 puts '你好,中国!' #在读取带有中文字符的文本文件时,要读取的文件必须以UTF-8编码保存。 Fil...

php读mysql中文乱码问题解决方法

涉及到的编码一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文...

SSH2框架的jsp中文乱码问题解决方法

写了个SSH2框架的demo,数据库中有两个表,班级表和学生表,双向关联一对多的关系。大致功能如下面三个界面      在功能实现的过程中,发现前台jsp页面往后台action传值时,文本框输入...

Python2.x中文乱码问题解决方法

这篇文章主要介绍了Python2.x中文乱码问题解决方法,本文解释问题原因、给出了处理办法并讲解了编码解码的一些知识,需要的朋友可以参考下

linux mysql 中文乱码问题解决方法

linux mysql 解决中文乱码问题

Unity 中关于中文乱码以及压缩解压遇到的问题解决方法

1. 在Unity 中,使用ICSharpCode.SharpZipLib 压缩,解压时,如果遇到中文文件或文件夹时,就会出现乱码问题, 那么只需在代码中加上如下两句话,其中Enconding,Get...

GET/POST时中文乱码问题解决方法

get/post时中文乱码问题的解决办法 常有的方法,get请求用在tomcat的编码改为utf-8 即可 post 过滤...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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