在网上流传着这样的办法让ROR以及Mysql支持中文:
- 在radrails中,请在project的property对话框中,左边选中info节点,右边设置编码方式为UTF-8
- 修改MySQL的配置文件C:/Program Files/MySQL/MySQL Server 5.0/my.ini,改其中的两处default-character-set=utf8,改完后重启MySQL(windows服务)。这一步也可采用instance wizard来做。
- 修改ApplicationController 如下:
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 - 请在rhtml中,或者适当的layout中,加上:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
- 在config/database.yml修改如下:development:
adapter: mysql
database: depot_development
encoding: utf8 *注意空格*
username: root
password:
host: localhost
保存后,重启ROR,启动app,再次ruby script/generate scaffold Product Admin应该就行了。数据库里的表应该都是utf8_general_ci,rhtml也应该都是utf-8编码。/app/views/layouts/admin.rhtml中加上<meta>标签。
我试验了一下让ROR支持中文(就做了2,4),可惜发现不行,不过改正方法也很简单,把“UTF-8 ”改为“gb2312”就可以了。
有时间的时候再总结下utf8和gb2312。