`
dearsuper
  • 浏览: 67271 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

ROR+Mysql5 utf8搭配问题解决方案

阅读更多

根据探索和总结,发现在字符集的问题上,最终明智的做法是使操作系统、数据库、程序编码都采用utf8格式。而不要试图使其中的某一个改用GBK,否则会出现难于搭配配置的问题,后悔莫及。如果有的人愿意用gb2312的话,呵呵,真实应用起来就知道,我们中文文化博大精深,很多大字符集的字其实是我们需要用到的。

  起初也是碰到问题,找了若干答案,最终解决办法如下:
  1、确定mysql数据库编码是utf8
  2、database.yml里面增加encoding: utf8
  3、确定编辑器的保存文件格式为:UTF-8,保证rhtml文件编码是UTF-8,如果是radrails,点击项目,右键选择属性来设置。

 
  其中,第1条的设置步骤:
  1.1 如果是windows版本的mysql,那么在安装的时候,系统就会提示用哪种编码,设置好了,一劳永逸。
    如果安装的时候设置错误了,修改mysql安装目录下的my.ini文件:
    [mysql]
    default-character-set=utf8
    ...
    # The default character set that will be used when a new schema or table is
    # created and no character set is defined
    default-character-set=utf8
    配置好后,重启mysql。
  1.2 如果是linux版本的mysql(我用centos5)
  1.2.1首先要确保centos5以中文方式安装,我测试过先按英文方式安装,可后来怎么也配不上中文字符集。重新用中文方式安装,字符集都会自动加载了,免去很多烦恼。
    如果不放心,确认一下:
    vi /etc/sysconfig/i18n (确保其内容是这样的.)
    LANG="zh_CN.UTF-8"
    查看变量:env
    export  LANG=zh_CN.UTF-8
    如果都是这样,就正确了!
  
  1.2.2修改mysql的配置文件,使数据库与服务器操作系统的字符集设置一致。
    vi /etc/my.cnf 设置(如果没有发现这个文件,就新建1个)
    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    default-character-set=utf8  (增加的关键一句,使得数据库缺省以utf8存储)
    当然,修改后,要重启数据库。
   
    再次用mysql -u root -p命令进入数据库系统,用SHOW VARIABLES LIKE 'character_set_%';命令查看到如下内容:
+--------------------------+-----------------------------------------------------------------------+
| Variable_name            | Value                                                                 |
+--------------------------+-----------------------------------------------------------------------+
| character_set_client     | latin1                                                                |
| character_set_connection | latin1                                                                |
| character_set_database   | utf8                                                                  |
| character_set_filesystem | binary                                                                |
| character_set_results    | latin1                                                                |
| character_set_server     | utf8                                                                  |
| character_set_system     | utf8                                                                  |
| character_sets_dir       | /usr/local/mysql-5.1.20-beta-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+-----------------------------------------------------------------------+
    发现关键项目已经用了utf8,但这样还不够,还要保证客户端也是用utf8的字符集来操作的
    登录的时候,要用以下命令:mysql --default-character-set=utf8 -u root -p
  
    再次用SHOW VARIABLES LIKE 'character_set_%';命令查看,结果变成了:
+--------------------------+-----------------------------------------------------------------------+
| Variable_name            | Value                                                                 |
+--------------------------+-----------------------------------------------------------------------+
| character_set_client     | utf8                                                                  |
| character_set_connection | utf8                                                                  |
| character_set_database   | utf8                                                                  |
| character_set_filesystem | binary                                                                |
| character_set_results    | utf8                                                                  |
| character_set_server     | utf8                                                                  |
| character_set_system     | utf8                                                                  |
| character_sets_dir       | /usr/local/mysql-5.1.20-beta-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+-----------------------------------------------------------------------+
    这样才能保证客户端所发命令都是基于utf8格式的,比如说建立数据库和表,默认就会以utf8编码,而无须再次指定。
 
    另外提一句,如果是jsp,页面定义成:<!---->就可以与数据库的utf8搭配了。而实验发现,如果改成:charset=utf8是有问题的。

分享到:
评论
5 楼 carlosbdw 2008-06-30  
不错,谢谢啦!
4 楼 yongyuan.jiang 2008-04-01  
非常好,装confluence乱码问题,果真是字符集问题,按上面步骤解决了~

总结归纳,我转载了:

装confluence,使用mysql乱码,查出是mysql编码设置问题:

最终解决方案:
mysql UTF8设置:

vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8  (数据库缺省以utf8存储)
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

[client]
default-character-set=utf8 (客户端缺省以utf8存储)

重启mysql

登陆mysql,查看:
show variables like 'character%';


+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


3 楼 glchengang 2007-09-13  
vincent253 写道
在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件

找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)



今天总算看到了。以前我用mysql命令行,都是用一次在命令行里设置一次,汗!
谢谢
2 楼 dearsuper 2007-09-13  
这样就全面了!感谢。
1 楼 vincent253 2007-09-11  
在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件

找到客户端配置[client] 在下面添加
default-character-set=utf8 默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 默认字符集为utf8
init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

修改好后,重新启动mysql 即可,查询一下show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

这样就不用每次连接 都使用  --default-character-set=utf8 了

相关推荐

    RoR中文解决方案(很不错哦)

    在处理中文内容时,RoR可能遇到编码问题,比如UTF-8与GBK的转换,或者在显示和存储中文字符时出现问题。这个解决方案可能包含了特定的配置、插件或者代码调整,以确保RoR应用能正确地处理和显示中文。 描述中提到的...

    mysqlDriver4ror.rar

    5. **兼容性问题**:确保MySQL驱动与运行的Ruby版本和MySQL服务器版本相匹配非常重要,不兼容可能导致连接失败或运行时错误。因此,在使用这些gem之前,应确认它们与系统环境的兼容性。 6. **安全性与维护**:定期...

    Windows 上搭建 ROR环境

    ### Windows上搭建Ruby on Rails(ROR)环境详解 ...在实际开发过程中,可能会遇到更多具体的细节问题,建议及时查阅官方文档或其他开发者的经验分享,以便更好地解决问题。希望每位学习者都能顺利踏上Rails开发之旅!

    在RHEL上安裝設置ROR(nginx+passenger+ruby+rails+oracle+netzke)

    在这个过程中,可能还会遇到如依赖库冲突、权限问题、数据库连接问题等挑战,需要根据具体情况解决。由于RHEL系统通常用于生产环境,因此安全性、稳定性和性能优化也是不可忽视的重要环节。在实际操作中,确保遵循...

    RoR性能优化经验谈

    RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    ror中文资料

    **Ruby on Rails(简称RoR)中文资料** Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”...

    初探ROR

    总结来说,Ruby on Rails提供了一种高效且优雅的Web开发方式,通过强大的工具和库,使得开发者能够专注于创新和解决问题,而非基础架构的搭建。对于初学者,深入理解Ruby语言和Rails框架的原理,掌握其核心概念和...

    神经网络ror resenet模型

    该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”(Residual-of-Residual)则是对ResNet的一种扩展,进一步优化了网络的性能,尤其在图像分类任务上表现突出。 **ResNet模型...

    ror实例

    Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...

    google-visioner:RoR + React Google Vision API消费者示例

    带有Google Vision集成的示例应用程序 Simple Images Vision应用查看器。 安装 请按照以下简单步骤安装和启动应用程序: 设置Rails应用 首先,安装应用程序所需的gems: bundle 接下来,安装前端依赖项: ...

    RoR选题方向—源代码

    Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...

    ROR安装必备所有架包

    在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    ROR绿色最新环境(2013/3/10)

    ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...

    机遇ROR 的图书管理系统

    《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...

    ROR 文件的上传与下载

    ### ROR 文件的上传与下载:深入解析与实践 在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails...

Global site tag (gtag.js) - Google Analytics