rails中文问题 (转自网络天空站)

来源:互联网 发布:centos sftp服务开启 编辑:程序博客网 时间:2024/04/27 21:25
 
1.在radrails中,请在project的property对话框中,左边选中info节点,右边设置编码方式为UTF-8

2.修改MySQL的配置文件C:/Program Files/MySQL/MySQL Server 5.0/my.ini,改其中的两处default-character-set=utf8,改完后重启MySQL(windows服务)。这一步也可采用instance wizard来做。

3.运行你的建库脚本,建库脚本中无须涉及到任何编码问题。

4. 修改ApplicationController 如下:
[code:1]
class ApplicationController < ActionController::Base
         before_filter :configure_charsets
                def configure_charsets
                         # @headers["Content-Type"] = "text/html; charset=utf-8"
                         @response.headers["Content-Type"] = "text/html; charset=utf-8"
                         # Set connection charset. MySQL 4.0 doesn??t support this so it
                         #will throw an error, MySQL 4.1 needs this
                         suppress(ActiveRecord::StatementInvalid) do
                         ActiveRecord::Base.connection.execute 'SET NAMES utf8'
                end
         end
end
[/code:1]



5.请在rhtml中,或者适当的layout中,加上:
[code:1]
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
[/code:1]


至此,无论是在Mysql中,前台页面中,还是在IDE中,都能正常使用中文

6.关于ruby本身的中文字串处理问题,例如size,substring等,请查看此文
http://www.blogjava.net/cap/archive/2006/12/14/87830.html
我的体会:
按照文中作者的方法配了一下,果然解决了中文的输入,显示,存储等问题,不过通过Sqlyog 查看 mysql数据表中显示的还是乱码,不过已经不影响正常使用了..
暂将中文编码问题的解决统一如下(使用GBK编码):
1.数据库中my.ini设定default-character-set=gbk;
#2.application.rb中加入:
#   before_filter :configure_charsets
#                def configure_charsets 
#                        # @headers["Content-Type"] = "text/html; charset=utf-8"
#                        @response.headers["Content-Type"] = "text/html; charset=gbk" 
#                       # Set connection charset. MySQL 4.0 doesn??t support this so it 
#                      #will throw an error, MySQL 4.1 needs this
#                         suppress(ActiveRecord::StatementInvalid) do
#                         ActiveRecord::Base.connection.execute 'SET NAMES gbk'
#                end
#   end
2.environment.rb最后加入:
   $KCODE="gbk"
   ActionController::Base.default_charset=('gbk')
3.网页头部加入:
   <meta http-equiv="content-type" content="text/html; charset=gbk" />
原创粉丝点击