Rails中文问题解决方法(FreeBSD MySQL)
创始人
2024-04-29 20:01:04
0

有关Rails中文问题,在网上看了很多的解决方法,都没有成功,经过多次试验,终于成功,并且觉得网上有些内容写得不对,在这里,我总结一下我的中文处理方法。

Rails中文问题解决方案步骤

1.操作系统:FreeBSD

2.数据库是mysql 5.1.33 在安装在FreeBSD之后,在默认路径是/usr/local/mysql。 在support-files文件夹中,将一个配置文件复制到/etc中,并改名为my.cnf,这就是mysql的默认配置文件,修改此文件,在文件中的[client],[mysqld],[mysql]部分增加“default-character-set=gbk”。重启数据库,就可以将数据库一些配置改成gbk。进行数据库后,运行“ show variables like 'character_set_%';”后结果:

  1. +--------------------------+----------------------------------+  
  2. | Variable_name            | Value                            |  
  3. +--------------------------+----------------------------------+  
  4. | character_set_client     | gbk                              |   
  5. | character_set_connection | gbk                              |   
  6. | character_set_database   | utf8                             |   
  7. | character_set_filesystem | binary                           |   
  8. | character_set_results    | gbk                              |   
  9. | character_set_server     | gbk                              |   
  10. | character_set_system     | utf8                             |   
  11. | character_sets_dir       | /usr/local/mysql/share/charsets/ |   
  12. +--------------------------+----------------------------------+ 

3.rails使用2.3.3,建立rails项目后,将config/database.yml中的encoding改为gbk.

4.在编写程序时,使用utf-8编码编写.rb文件,如果页面中提交的参数中有中文,那么提交后中文后变成乱码,这样就要用gbk将参数先进行转码(这个要根据你的程序进行编写,我的程序 的公用部分这样写的)

在application_controller.rb中增加

  1. before_filter :set_charset 
  2. def set_charset  
  3.     headers["Content-Type"] = "text/html; charset=utf-8" 
  4. end 
  5.  
  6. #解析参数  
  7. parameters = @request.parameters  
  8. parameters.each do |key, value|  
  9.  #value is being encoded if chinese  
  10.  parameters[key] = gbk(value)  
  11. end 
  12.  
  13. #from utf-8 to gb2312  
  14. def self.gbk(text = '')  
  15.  return '' if text.blank?  
  16.  text = Iconv.conv('gb2312//IGNORE''utf-8//IGNORE', text)  
  17.  return text  
  18. end 

这样在写入数据库中就是中文了。

5.在取出数据库信息后要进行utf8编码

6.在输出页面中要加入“< meta http-equiv="content-type" content="text/html; charset=utf-8"/>”

这样就可能正确显示中文了,总之,转码的过程是:utf8->gbk这是从页面到数据库的过程,从数据库到页面是gbk->utf8。

这样就介绍了Rails中文问题的解决方法。本文来自Ming's Blog:《Rails, Mysql, FreeBSD中文问题解决》。

【编辑推荐】

  1. Ruby on Rails入门之道
  2. Ruby on Rails 2.3.3发布 主要修复Bug
  3. Ruby on Rails开发的五点建议
  4. 浅谈Ruby和JRuby的学习
  5. Web开发谁更高效 Java对决Ruby on Rails

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...