iconv -c -f latin1 -t utf-8 doc/ddd.txt > doc/new.txt
http://www.javaeye.com/topic/240133
http://www.javaeye.com/topic/565606
ruby也有utf-8编码问题
http://www.javaeye.com/topic/369753
2009-03-17
Rails 中的乱码问题解决
关键字: set_charset- 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
如果,你遇到了上面的错误提示,
那么,说明你的Rails版本升级了,设置编码的描述改变了,请点击这里
Rails中文显示乱码的描述改变
以上的设置分布对应于html javascript mysql同时还要注意
文件编辑保存时的编码也需要统一为utf8(建议在编辑器中直接设置为utf8,注意有不少编辑器默认跟操作系统默认编码走,比如xp的默认编码是gbk,而不是utf8,这一点需要特别注意)
数据库的默认编码也需要统一为utf8,默认的latin1_swedish_ci也可能会引起乱码问题
下面还有night_stalker回答问题的部分
将字符串编码改成系统编码(中文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的。