浏览 11186 次
锁定老帖子 主题:rails中文问题(mysql乱码)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-29
这个问题一般的解决方法: [quote] 1.在radrails中,请在project的property对话框中,左边选中info节点,右边设置编码方式为UTF-8 2.修改MySQL的配置文件C:\Program Files\MySQL\MySQL Server 5.0\my.ini,改其中的两处default-character-set=utf8,改完后重启MySQL(windows服务)。这一步也可采 用instance wizard来做。 3.运行你的建库脚本,建库脚本中无须涉及到任何编码问题。 4. 修改ApplicationController 如下: ruby 代码
5.请在rhtml中,或者适当的layout中,加上: 至此,无论是在Mysql中,前台页面中,还是在IDE中,都能正常使用中文 6.关于ruby本身的中文字串处理问题,例如size,substring等,请查看此文 http://www.blogjava.net/cap/archive/2006/12/14/87830.html [/quote] 这在railscn.com上已经结帖了,别处也是乎大同小异。 但: 一、页面中文问题是乎不用这麻烦: 只要将rails所有的文件用utf-8格式保存(其它的都可不要),就可是很好的支持中文显示。 在rails 1.1.6和1.2.2下都测试正常(windows和linux都测试过) 二、mysql中文问题却比较麻烦: 1.rails所有的文件用utf-8格式保存,将mysql的编码为utf-8,页面可以正常读、写、显示,可mysql所是一堆乱码。 2.然后layout中,加上: ,没有解决问题 3.接着,修改ApplicationController 如下: ruby 代码
4.继承修改ApplicationController ruby 代码
ActiveRecord::StatementInvalid in CompanyuserController#createMysql::Error: #HY000Incorrect string value: '\xE5\x9C\xA8' for column 'name' at row 1: INSERT INTO company_users (`name`, `companyId`, `username`, `tel`, `note`, `address`) VALUES('在', 245, '', '', '', '')
5.又看到一种方法:在database.yml文件中加上 encoding: utf8。 于是,去掉2、3、4运行,依然得到4的错误。加上2、3、4(一步一步加)错误依旧。 这个问题,我怀疑Http请求将utf8编码转换在gb2312,由是就将mysql改为utf8结果,存入数据库的数据仍然出现。 看到bd7lx的博客上有一篇文章《 gettext 汉化的*正规*正轨*而且还是简单的方法 》是乎是解决之道,但没有试用。还是想明白在无插件下怎么解决mysql中文问题以及原理。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-04-01
看来没有人解答了。。。
换个问题问一下:各位的MySQL数据库中的中文可以正常显示吗?(我的没有装可视化客户端) 另: 为什么在database.yml文件中加上 encoding: utf8会出现错误 |
|
返回顶楼 | |
发表时间:2007-04-01
其实解决中文问题很简单:
1、确定MySQL数据库编码是utf8 2、database.yml里面增加encoding: utf8 3、确定rhtml文件编码是UTF-8 这样就搞定了。 只不过很多人不知道应该如何正确设置数据库编码,在windows平台,如果安装的时候创建的数据库不是utf8,后来再怎么修改配置文件也白费。这一点,只要你创建一个表,去看看这个表的varchar字段的编码就知道究竟有没有改过来了。 |
|
返回顶楼 | |
发表时间:2007-04-01
接此贴问个问题,要是我的mysql不是3306端口的话,yml里面port应该怎么设置呢。。好像打端口号不对的。
|
|
返回顶楼 | |
发表时间:2007-04-01
robbin 写道 其实解决中文问题很简单:
1、确定MySQL数据库编码是utf8 2、database.yml里面增加encoding: utf8 3、确定rhtml文件编码是UTF-8 这样就搞定了。 只不过很多人不知道应该如何正确设置数据库编码,在windows平台,如果安装的时候创建的数据库不是utf8,后来再怎么修改配置文件也白费。这一点,只要你创建一个表,去看看这个表的varchar字段的编码就知道究竟有没有改过来了。 也可以针对表加UTF-8编码 class CreateUsers < ActiveRecord::Migration def self.up create_table :users, : options => 'CHARSET=utf8' do |t| t.column :name, :string t.column :password, :string t.column :birthday, :datetime t.column :email, :string t.column :address, :text end end def self.down drop_table :users end end |
|
返回顶楼 | |
发表时间:2007-04-01
针对表加没有用,关键还是字段
|
|
返回顶楼 | |
发表时间:2007-04-19
robbin 写道 其实解决中文问题很简单:
1、确定MySQL数据库编码是utf8 2、database.yml里面增加encoding: utf8 3、确定rhtml文件编码是UTF-8 这样就搞定了。 只不过很多人不知道应该如何正确设置数据库编码,在windows平台,如果安装的时候创建的数据库不是utf8,后来再怎么修改配置文件也白费。这一点,只要你创建一个表,去看看这个表的varchar字段的编码就知道究竟有没有改过来了。 中文问题就用上面三点就可以解决的!就是数据库中列的编码怎么改成utf-8的默认的好像是lant-1什么的 修该了表的编码,那些vatchar列的编码还是lant-1的。该怎么办!? |
|
返回顶楼 | |
发表时间:2007-05-23
先把数据库的数据导出,然后再按utf-8导入就可以了
|
|
返回顶楼 | |
发表时间:2007-06-01
robbin 写道 其实解决中文问题很简单:
1、确定MySQL数据库编码是utf8 2、database.yml里面增加encoding: utf8 3、确定rhtml文件编码是UTF-8 其实:我的中文问题,是没有问题。 robbin回复后,我就觉得可能是windows的cmd问题,一直想把这个问题结了,可有些事情去做别的去了。 因为myql客户端我使用的windows的命令行,当时我怀疑是cmd把mysql的UTF-8换成GB2312或者其它的中文编码了,所以显示的是乱码。 前些天打开cmd属性一看,果然是GBK,然后安装了MySQL Query Browser 于是真相大白--正确的汉字显现出来了。 另:database.yml里面增加encoding: utf8报错的问题,这次确没有遇到。找不到当时的环境,想想可能最大的就是 robbin 写道 只不过很多人不知道应该如何正确设置数据库编码,在windows平台,如果安装的时候创建的数据库不是utf8,后来再怎么修改配置文件也白费。这一点,只要你创建一个表,去看看这个表的varchar字段的编码就知道究竟有没有改过来了。 操作字符编码与数据库字段编码不相符吧 |
|
返回顶楼 | |