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的。