ruby程序中文乱码问题解决方法
2007-09-23 11:01
323 查看
这个是从网上找的,我遇到的用红色标识
环境:。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"
相关文章推荐
- qt creator修改程序编码(解决中文乱码问题)的方法
- qt creator修改程序编码(解决中文乱码问题)的方法
- 程序读mysql中文乱码问题解决方法
- 程序输出urf-8编码的xml文件中文(汉字)乱码问题解决方法
- 对Java程序中的中文乱码问题的解决方法
- qt creator修改程序编码(解决中文乱码问题)的方法
- redhat7中Codeblocks编译c程序乱码问题 中文乱码解决方法
- QT学习——qt creator修改程序编码(解决中文乱码问题)的方法
- java中文乱码之解决URL中文乱码问题的方法
- 解决java程序中文乱码问题
- Code::Blocks 中文乱码问题原因分析和解决方法
- JSP中文乱码问题解决方法小结
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- JSP中文乱码问题解决方法详解
- 如何解决jQuery load方法加载文档时的中文乱码问题
- 读mysql中文乱码问题解决方法
- 解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!
- 解决get方法传递URL参数中文乱码问题
- Zip文件中文乱码问题解决方法(MAC->Windows)
- 中文乱码问题的解决方法 转载