ruby+mysql 怎么才能使用中文

ruby+mysql 怎么才能使用中文

我用的是ubuntu7.04英文的系统,ruby+mysql,在mysql中已经把charset改成gb2312了,用phpadmin可以看到中文内容,
但是,我用ruby取数据出来的话全部都是问号,这个,怎么整阿?
 1 require 'mysql'
 2 require 'iconv'
 3
 4 m = Mysql.new("localhost","abc","abc","dbabc")
 5 r = m.query("select * from bc_message")
 6 r.each_hash do |f|
 7 var1 = "#{f['title']}"
 8 var2 = Iconv.conv("utf8","gb2312",var1)
 9 puts var1
10 puts var2
11 end
这个没效果
执行你的SQL前先执行这个SQL语句试试:
set names 'gb2312'
Linux的控制台不知道是不是默认是UTF8格式输出的,数据库最好用UTF8哈。
确认一下你的ruby环境是不是支持中文,ruby内部是UTF-8的
用puts $KCODE看一下,或者设置$KCODE='u'

然后楼主用的不是ActiveRecord来操作数据库,那么可以先测试ruby环境能否正常处理中文,然后用插入中文到数据库,在从数据库中读出来,这样很容易判断问题出在什么地方

以前我一个遗留数据库,初始化设置字符编码不对,即使改变编码也没有用,我用笨办法
用原来的编码dump出来数据库到文件=>对文件转码=>重建数据库(用正确的编码,在我这里是UTF-8)=>import数据
然后就永远采用UTF-8来处理所有跟字符编码的问题
感谢phoenix 和管理员,终于整出来的,其实方法倒很简单,m.query("SET NAMES UTF8")
看来utf8还是比较好用的阿。
顺便再题一下,偶的数据库数据是小蜜蜂采集器采集的,开始数据库latin全是乱码,然后用phpadmin将mysql改成gb2312,可以采集中文了,但是在读取的时候居然需要m.query("SET NAMES UTF8")(包括用ruby和直接在mysql command行敲命令),虽然觉得怪怪,但至少能用了,还是很开心的。
还有,puts $KCODE
NONE
=> nil