转帖:ROR与MySQL的中文显示

原文链接: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' 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值