论坛首页 编程语言技术论坛

Rails开发使用gb2312,gbk编码的hack方法

浏览 6372 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-10  
如果你需要在以下情况下使用gb2312,或者gbk编码,可以试下这个办法。也许可行。



1.rhtml,rb文件编码格式非utf8,采用gb2312,gbk编码
2.在ruby代码中需要输入中文字符串,并且某些特殊字会导致代码无法被正常解析。
3.数据库采用gb2312,或gbk编码


以上的情况下,最大的问题就是某些特殊中文字符,会使得代码解析出错。
警告,这样的方式未经过大规模验证, 对于rails的其他部分的影响未知。请谨慎采用.

解决方法
找到 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,
  }

  'NONE' => 'gb2312', <----修改这里
保存文件。
确保你的系统的当前编码设置也是gb2312.
修改你的工程的编码格式
$KCODE='n'

重新启动你的工程,这下会引起错误的特殊中文字符,就不会出现错误了.

   发表时间:2007-02-10  
我试了,不知道为什么,不起作用?
我在页面中加入了“删除”字符就会出错,换为“其它”就没事。
0 请登录后投票
   发表时间:2007-02-10  
oksonic 写道
我试了,不知道为什么,不起作用?
我在页面中加入了“删除”字符就会出错,换为“其它”就没事。


要确保$KCODE是'n'才行. 有些额外的库会修改 $KCODE的值 对了 这个我只在windows平台做了小规模测试.
0 请登录后投票
   发表时间:2007-07-26  
我改了一下,可以用的
平台是 windows,感谢楼主分享。

历史遗留数据库是gb2312的,没办法,想用utf-8也不行啊。

0 请登录后投票
   发表时间:2007-07-27  
数据库的编码问题可以通过导出为 SQL 文件转换编码后再导入来解决吧?
0 请登录后投票
   发表时间:2007-08-02  
历史遗留的系统还在使用,不能说改就改的啊
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics