ruby 查询数据库 导出中文乱码的问题 网上的方案有很多种
最普遍的就是 dbh.query('set names utf8;')
添加此语句的作用是 将数据库中的所有的字符集 定义为 utf-8(查看数据库字符集方式: mysql> show variables like '%char%';)
我按照这样操作后,导出的中文瞬间就不乱码了,但是出现了下个问题
在ruby1.9.3版本中 我的数据库查询的中文为 "导航页" p后显示的格式为\xE5\xb5.....诸如此种
手动 p "导航页" 结果为 "\u5BFC\u822A\u9875"
两者并不等同
解决方案:dbh.query('set names gb2312;')
后续用 Iconv.iconv("utf-8","gb2312",str) 或 str.encode 或 str.force_encoding 进行转码最终结果得到 手动p中文 一样的效果
总结:dbh.query('set names utf8;') 至于此处的utf-8 应该和数据库属性的字符集 相同,否则强制转码为其他形式后,与ruby并不兼容。