经常碰到这样的问题,会在系统中修修补补,但是这不是好的实践,大家有方法么?
有看到说有人用“utf8-cleaner”,这个靠谱不?
首先你要知道问题是哪里来的,源代码里面的话加一个头"encoding: utf-8",读文件的话 Encoding.default_internal = "UTF-8"
5 楼正解,花几个小时理解下编码,以及 ruby 中 encode, force_encoding, unpack, pack 的用法,更多可以看看其他语言编码的处理,就不会需要“终极方案”了。
发现 Iconv 除了一个提示,昨晚写代码的时候正好遇到这个问题了,分享下代码:
# http://www.redmine.org/projects/redmine/repository/revisions/11440/diff/trunk/lib/tasks/migrate_from_mantis.rake
if @charset
if RUBY_VERSION < '1.9'
str = Iconv.iconv("UTF-8//IGNORE", "#{@charset.upcase}//IGNORE", line)
else
str = line.to_s.force_encoding(@charset.upcase).encode('UTF-8')
end
end