Rails 中的乱码问题解决

before_filter :set_charset  
def set_charset
if request.xhr?
header['Content-Type']="text/javascript,charset=utf-8"
else
header['Content-Type']="text/html,charset=utf-8"
end
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
end
end



[img]http://hlee.iteye.com/upload/attachment/90409/cae6dbe8-609f-35f6-877e-51f2212e7506.jpg[/img]
[img]http://hlee.iteye.com/upload/attachment/90411/1f422f7f-5179-3d54-b4f5-aaae8d503212.jpg[/img]

如果,你遇到了上面的错误提示,
那么,说明你的Rails版本升级了,设置编码的描述改变了,请点击这里
[url=http://hlee.iteye.com/admin/blogs/360379]Rails中文显示乱码的描述改变[/url]


以上的设置分布对应于html javascript mysql同时还要注意
文件编辑保存时的编码也需要统一为utf8(建议在编辑器中直接设置为utf8,注意有不少编辑器默认跟操作系统默认编码走,比如xp的默认编码是gbk,而不是utf8,这一点需要特别注意)
数据库的默认编码也需要统一为utf8,默认的latin1_swedish_ci也可能会引起乱码问题
下面还有[url=http://night-stalker.iteye.com/]night_stalker[/url]回答问题的部分
将字符串编码改成系统编码(中文windows控制台一般是GB2312或者GBK)

在ruby 1.8,用iconv:

require 'iconv'  
p Iconv.conv('gbk','utf-8',item[:name]))

require 'iconv'
p Iconv.conv('gbk','utf-8',item[:name]))



在ruby 1.9,用encoding:
p item[:name].encode(Encoding.default_external)  

p item[:name].encode(Encoding.default_external)



如果嫌每次都转码不方便,可以

require 'iconv'  
def echo something
if something.nil?
p nil
else
p Iconv.conv('gbk','utf-8',something.to_s)
end
end

require 'iconv'
def echo something
if something.nil?
p nil
else
p Iconv.conv('gbk','utf-8',something.to_s)
end
end


以后就用echo输出编码为utf-8的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值