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
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
# 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')
ActionController::Base.default_charset=('gbk')
3.网页头部加入:
<meta http-equiv="content-type" content="text/html; charset=gbk" />