实在不好意思在开这样的帖子,关于这个问题的帖子也不少了,不过找了一堆还是没有解决。
这个问题一般的解决方法:
[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 代码
- class ApplicationController < ActionController::Base
- before_filter :configure_charsets
-
- def configure_charsets
- @response.headers["Content-Type"] = "text/html; charset=utf-8"
- suppress(ActiveRecord::StatementInvalid) do
- ActiveRecord::Base.connection.execute 'SET NAMES utf8'
- end
- end
- end
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 代码
- class ApplicationController < ActionController::Base
- before_filter :configure_charsets
-
- def configure_charsets
- @response.headers["Content-Type"] = "text/html; charset=utf-8"
- end
- end
没有解决问题
4.继承修改ApplicationController
ruby 代码
- class ApplicationController < ActionController::Base
- before_filter :configure_charsets
-
- def configure_charsets
- @response.headers["Content-Type"] = "text/html; charset=utf-8"
- suppress(ActiveRecord::StatementInvalid) do
- ActiveRecord::Base.connection.execute 'SET NAMES utf8'
- end
- end
- end
于是得到如下错误:
ActiveRecord::StatementInvalid in CompanyuserController#create
Mysql::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, '', '', '', '')
RAILS_ROOT: ./script/../config/..
suppress方法我并不熟悉,大概是使执行数据库操作时使用utf-8编码。
5.又看到一种方法:在database.yml文件中加上 encoding: utf8。
于是,去掉2、3、4运行,依然得到4的错误。加上2、3、4(一步一步加)错误依旧。
这个问题,我怀疑Http请求将utf8编码转换在gb2312,由是就将mysql改为utf8结果,存入数据库的数据仍然出现。
看到
bd7lx的博客上有一篇文章《
gettext 汉化的*正规*正轨*而且还是简单的方法 》是乎是解决之道,但没有试用。还是想明白在无插件下怎么解决mysql中文问题以及原理。
分享到:
- 2007-03-29 11:41
- 浏览 6625
- 评论(8)
- 论坛回复 / 浏览 (8 / 11149)
- 查看更多
相关推荐
NULL 博文链接:https://314858770.iteye.com/blog/687978
docker-rails6-mysql8 启动Rails设置 跑新轨道 $ docker-compose run web rails new . --force --no-deps --database=mysql --skip-test --webpacker docker镜像构建 $ docker-compose build 编辑database.yml ...
NULL 博文链接:https://zyn-zyn.iteye.com/blog/1186887
NULL 博文链接:https://dendrobium.iteye.com/blog/305938
支持rails2.0以上版本的配置说明,文档从我自己的博客中整理出来,不愿意用资源分的朋友可以去我的博客看: http://wudihamagong.spaces.live.com/ 或者 http://blog.csdn.net/abcdefg0 ^_^
– c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so 实际上是找不到连接所需的dll文件:libmySQL.dll 在mysql安装目录下的bin目录下将此文件复制到ruby的bin目录下即可解决此问题. ...
1.安装gem,进入gem文件夹,里面有个setup文件,直接双击就行了。 2.进入rails目录使用gem命令安装(这一步必须要上...3.复制libmySQL.dll到ruby的安装目录的bin文件夹下,然后使用gem安装mysql-2.7.3-x86-mswin32.gem.
rails指南 中文版
本文简单介绍了Ruby On Rails的安装步骤以及MySQL数据库的配置方法,并介绍了几个官方阅读资源。
Ruby on Rails中文指南
主要介绍了Rails中使用MySQL分区表一个提升性能的方法,本文总结出了一个简单的方法实现避免扫描全部的分区表,从而提升性能,需要的朋友可以参考下
Ruby 的现代、简单且非常快速的 Mysql 库 - 绑定到 libmysql Mysql2 gem 旨在服务于连接、查询和迭代结果的极其常见的用例。那里的一些数据库库作为已经很复杂的可用 C API 的直接 1:1 映射。这个不是。
NULL 博文链接:https://like-eagle.iteye.com/blog/994634
此dll为ruby on rails使用MySql时,要用的程序
Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf
Ruby On Rails中文教材(PDF)
Rails Guides 5.0 中文版
敏捷Rails中文教程 敏捷Rails中文教程 敏捷Rails中文教程
mkdir Rails_MySQL5.7_Docker ファイルの用意 Gemfile Gemfile.lock Dockerfile docker-compose.ymlを作成します。 Gme文件 来源“ ” gem“ rails”,“ 6.0.2” Gemfile.lock 何も书かない。 Docker文件 FROM ruby...