有关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_%';”后结果:
- +--------------------------+----------------------------------+
- | Variable_name | Value |
- +--------------------------+----------------------------------+
- | character_set_client | gbk |
- | character_set_connection | gbk |
- | character_set_database | utf8 |
- | character_set_filesystem | binary |
- | character_set_results | gbk |
- | character_set_server | gbk |
- | character_set_system | utf8 |
- | character_sets_dir | /usr/local/mysql/share/charsets/ |
- +--------------------------+----------------------------------+
3.rails使用2.3.3,建立rails项目后,将config/database.yml中的encoding改为gbk.
4.在编写程序时,使用utf-8编码编写.rb文件,如果页面中提交的参数中有中文,那么提交后中文后变成乱码,这样就要用gbk将参数先进行转码(这个要根据你的程序进行编写,我的程序 的公用部分这样写的)
在application_controller.rb中增加
- before_filter :set_charset
- def set_charset
- headers["Content-Type"] = "text/html; charset=utf-8"
- end
- #解析参数
- parameters = @request.parameters
- parameters.each do |key, value|
- #value is being encoded if chinese
- parameters[key] = gbk(value)
- end
- #from utf-8 to gb2312
- def self.gbk(text = '')
- return '' if text.blank?
- text = Iconv.conv('gb2312//IGNORE', 'utf-8//IGNORE', text)
- return text
- 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中文问题解决》。
【编辑推荐】
当前标题:Rails中文问题解决方法(FreeBSD+MySQL)
文章出自:http://www.shufengxianlan.com/qtweb/news47/482797.html
成都网站建设公司_创新互联,为您提供手机网站建设、App开发、python、微信小程序、网站内链、微信公众号
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联