【转载】Rails使用gb2312/gbk与utf8共存的解决方案

出处: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_charsets
def 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中存在“删除”字样的情况就出错 的解决方案!

别忘记重新启动一下项目哦~

呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值