转帖:ROR与MySQL的中文显示
2008-04-15 11:11
232 查看
原文链接:http://iceskysl.1sters.com/?action=show&id=125 作者: iceskysl
注:原文的分段不是很清楚,我稍微做了调整,不过没有仔细看,暂时先留着,测试通过后再改
一、安装数据库:
1、安装5.0版本。
2、在安装时选择"utf-8"编码。
3、如果安装时未选"utf-8",可用 MySQL Administrator 的 “Startup Variables”/”Advanced” 更改 Def. Char Set 为 “utf-8” 。或者编辑MySQL目录下的my.ini文件:
[mysql]default-character-set=utf8 ;SET NAMES 'utf8'
[mysqld]default-character-set=utf8
4、安裝 MySQL Tools :MySQL Administrator ,MySQL Query Browser
5、在MySQL Query Browser中执行:SHOW VARIABLES LIKE 'character_set_%'; 查询系统的字符串均为utf8。
6、建立数据库。选择MyISAM,InnoDB都可以,不过后者支持事务处理,这是它的诱人之处。
7、建立表。在用MySQL Query Browser创建表时,可再次指定字符集。并可以对数据库的存储引擎进行修改。
二、开发工具:使用“RedRails”。并在其“属性”选项中选择编码为"utf-8"格式。这样,你的所有文件就都是utf8格式了。
三、修改文件:
A、将public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode
B、修改app/controller/application.rb文件。
class ApplicationController < ActionController::Base
before_filter :set_charset
def set_charset@headers["Content-Type"] = "text/html; charset=utf-8"
end
end
四、问题:浏览器,与代码内的中文的显示都可以了。但数据库中的表为什么还是乱码呢?此问题按james的意见,对database.yml文件进行了修改,数据库显示中文正常。你的数据库连接串也需要加上utf-8的设置,如:在database.yml中需要加上
development:
adapter: mysql
database: database
username: root
password:
host: localhost
encoding: utf8
五、问题二:如果一个表选择MyISAM引擎时,可为一个表建立两个外键约束,但若是InnDB引擎时,建立一个外键约束还可以,但建立两个外键约束时,会提示error:150错误,创建失败。
总结一下:
一、在MySql这边: 将Charecter设置成为utf8
二、application.rb
before_filter :configure_charsets
def configure_charsets
@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
三、environment.rb
$KCODE = 'u'
require 'jcode'
注:原文的分段不是很清楚,我稍微做了调整,不过没有仔细看,暂时先留着,测试通过后再改
一、安装数据库:
1、安装5.0版本。
2、在安装时选择"utf-8"编码。
3、如果安装时未选"utf-8",可用 MySQL Administrator 的 “Startup Variables”/”Advanced” 更改 Def. Char Set 为 “utf-8” 。或者编辑MySQL目录下的my.ini文件:
[mysql]default-character-set=utf8 ;SET NAMES 'utf8'
[mysqld]default-character-set=utf8
4、安裝 MySQL Tools :MySQL Administrator ,MySQL Query Browser
5、在MySQL Query Browser中执行:SHOW VARIABLES LIKE 'character_set_%'; 查询系统的字符串均为utf8。
6、建立数据库。选择MyISAM,InnoDB都可以,不过后者支持事务处理,这是它的诱人之处。
7、建立表。在用MySQL Query Browser创建表时,可再次指定字符集。并可以对数据库的存储引擎进行修改。
二、开发工具:使用“RedRails”。并在其“属性”选项中选择编码为"utf-8"格式。这样,你的所有文件就都是utf8格式了。
三、修改文件:
A、将public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode
B、修改app/controller/application.rb文件。
class ApplicationController < ActionController::Base
before_filter :set_charset
def set_charset@headers["Content-Type"] = "text/html; charset=utf-8"
end
end
四、问题:浏览器,与代码内的中文的显示都可以了。但数据库中的表为什么还是乱码呢?此问题按james的意见,对database.yml文件进行了修改,数据库显示中文正常。你的数据库连接串也需要加上utf-8的设置,如:在database.yml中需要加上
development:
adapter: mysql
database: database
username: root
password:
host: localhost
encoding: utf8
五、问题二:如果一个表选择MyISAM引擎时,可为一个表建立两个外键约束,但若是InnDB引擎时,建立一个外键约束还可以,但建立两个外键约束时,会提示error:150错误,创建失败。
总结一下:
一、在MySql这边: 将Charecter设置成为utf8
二、application.rb
before_filter :configure_charsets
def configure_charsets
@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
三、environment.rb
$KCODE = 'u'
require 'jcode'
相关文章推荐
- MySQL 中文显示乱码(转帖)
- mysql解决插入中文数据显示??
- mysql 中文显示乱码解决方案
- mysql中文显示乱码
- Mac中MySQL无法显示中文全解决
- MySQL 中文显示乱码
- Ubuntu下mysql不能显示中文解决方法
- Mysql 使用utf8显示中文
- c#写入Mysql中文显示乱码 解决方法
- MySQL 中文显示乱码
- DOS命令行窗口mysql中文显示乱码问题
- MySQL 中文显示乱码
- 解决MySQL客户端输出窗口显示中文乱码问题的办法
- 关于mysql中无法显示中文的完美解决方案
- mysql中文显示乱码,mysql中文显示成问号
- PHP显示MySQL查询结果时中文问号
- Python 操作MySQL中文显示乱码的解决方法
- MySQL客户端输出窗口显示中文乱码问题解决办法
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)