出处:http://xuxu.name/b-4755e670-2cbd-4488-8b4f-a04a1c022fea.htm
作者:xuxu
最近做个项目,需要数据库是UTF-8编码,而Rails程序使用GBK编码。(别问为什么)
那么如何实现这两种编码形式的共存呢?
首先,在创建数据库的时候,要保证数据库是UTF8编码的,然后在rails项目的conf/database.yml中数据库链接字符串加上encoding: utf8 , 这样保证用utf8的形式来读取数据库中的数据。
然后在IDE中(我的是Apatana),“窗口->首选项->工作空间”找到文本文件编码设置,设置为默认的GBK(默认的。。)
修改项目的 config/environment.rb 文件,在最后增加两行:
$KCODE ='n'
require 'jcode'
注意,一定要在最后加,否则不起作用!
然后修改app/controllers/application.rb文件,增加如下行:
before_filter :configure_charsetsdef configure_charsets
response.headers["Content-Type"] = "text/html; charset=gb2312"
end
同时还要保证其他的html文件中也将编码设置成了gb2312格式。
还要注意,若原有的存在utf8格式的view文件,也需要转成gb2312格式的。
然后就是最关键的一步!修改ruby的安装目录下的文件(假设安装在了C盘):
找到 C:"ruby"lib"ruby"1.8"xsd"charset.rb文件,
找到下面的代码
代码
CharsetMap = {
'NONE' => 'us-ascii',
'EUC' => 'euc-jp',
'SJIS' => 'shift_jis',
'UTF8' => 'utf-8',
'X_ISO_8859_1' => 'iso-8859-1',
'X_UNKNOWN' => nil,
}
修改为
代码
CharsetMap = {
'NONE' => 'gb2312',
'EUC' => 'euc-jp',
'SJIS' => 'shift_jis',
'UTF8' => 'utf-8',
'X_ISO_8859_1' => 'iso-8859-1',
'X_UNKNOWN' => nil,
}
这样就大功告成了!针对那些在rhtml中存在“删除”字样的情况就出错 的解决方案!
别忘记重新启动一下项目哦~
呵呵
红马天下 版权所有
博客:http://homer.cnblogs.com/
欢迎转载,但转载必须注明作者和出处。