我---7号斋主人

已婚
爱老婆
I wanna be a happy fish...

星期二, 十月 17, 2006

关于ror连接mysql中文乱码的问题

懒得整理了,内容中主要涉及ror和mysql连接时,页面中文正常显示,用客户端直接连数据库中文乱码的问题:

Pocky: mysql的编码设置为utf-8,完了之后,数据在页面操作的时候,都正常,可是用数据库客户端去连的时候,这个中文乱码是怎么解决的来着?

chinaonrails: <chf99cn> 你的客户端工具是什么?
<wwpizi> me too 我也有这个问题

Pocky: front啊
我以前曾经设置好了的,可是现在搞不定了。

chinaonrails: <chf99cn> 你从数据库中读出数据是乱码么?

Pocky: 是乱码
ÅçÎâç÷Îâ 这种样子的,不是其他什么编码格式

chinaonrails: <wwpizi> 你把数据库编码设置成 utf-8

Pocky: 我数据库就是utf-8

chinaonrails: <wwpizi> 这样可以保证 你在页面显示是正确的
<chf99cn> 首先在environment.rb里加入 $KCODE = 'U'
<chf99cn> REQUIRE 'jode'
<chf99cn> 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
<chf99cn> 加在application.rb
<chf99cn> before_filter :configure_charsets

Pocky: 哦,environment没有设。

chinaonrails: <chf99cn> 我的数据库客户端工具是用的Navicat,没有问题

Pocky: 你是不是漏了数据库配置的YML文件,要加个encoding:utf8吧?



下面是转自:http://www.blogjava.net上的一篇文章,还提到中文时间格式的问题。
Ruby on Rails 学习:解决中文乱码问题
初学Rails,简单的做了一个例子,发现存在中文问题。
大致中文问题归类如下:
1、页面无法显示中文,产生中文乱码
2、Mysql数据库采用utf8后,页面采用utf8,数据库保存是乱码,但页面显示正常。
3、时间格式在页面上的中文显示产生乱码。
打开:application.rb:修改代码如下显示:
class ApplicationController < ActionController::Base
before_filter :set_charset
def set_charset
@headers["Content-Type"] = "text/html; charset=utf-8"
end
end

没有评论: