ror中文解决方法

Rails学习笔记(6)中文乱码的解决

环境:
。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;
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值