中文乱码显示解决方法大全

中文乱码显示解决方法大全
操作日期:2008-11-08早上
操作环境:Ruby1.86、Rails2.1.2、MYSQL5、RadRails0.7.1
文章作者:Gevin QQ:1616569


   中文乱码显示问题普遍存在于各种编程语言中,开发J2EE的过程中也经常遇到这类问题,而影响中文显示的原因很多,数据传递的编码不同、开发工具的编码设置和数据库本身的编码问题都可能使得无法正常显示中文。
    这几天在学习ROR中也遇到了中文乱码的显示问题,包括数据库数据中文乱码显示和views的html.erb中的中文乱码显示等问题,解决的方法也不一样,现记录如下。

一、数据库中文乱码显示解决方法
现象:数据库中的中文数据将显示为????。
中文乱码显示解决方法大全

解决方法:
步骤1:安装MySQL时的字符集选择utf-8,若已安装但不是选择这个,可通过修改MySQL安装目录下的my.ini,修改代码default-character-set为:
[mysql]

default-character-set=utf8
步骤2:新建数据库和数据库表的时候也选择utf8
步骤3:修改ROR项目下的数据库配置文件database.yml,代码如下:
development:
adapter: mysql
database: department_development
encoding: utf8
host: localhost
username: root
password: xxxx

重启服务器,数据库中文乱码显示的问题已解决,浏览如下:
中文乱码显示解决方法大全


二、html.erb等文件的中文乱码显示问题解决方法
    除了读取数据库数据时中文会显示为乱码外,编写在html.erb等文件的中文也同样会显示乱码,此处主要讨论使用IDE工具编写的文件出现中文乱码的问题,因为用记事本编写时保存为utf-8的格式时就不会出现这种问题。

现象:
中文乱码显示解决方法大全

解决方法:
在新建Rails Project项目后,必须设置一下该Project的编码类型为UTF-8,设置的步骤如下:
右击“项目名称” | properties | 将“Text file encoding”设置为UTF-8,如图:
中文乱码显示解决方法大全

刷新页面,效果如下:
中文乱码显示解决方法大全


三、link_to 中文参数导致页面出错的问题
若将每条信息后面“Show Edit Destroy”改为“显示 修改 删除”后将浏览出错,即修改代码
    <td align="center"><%= link_to 'Show', department %></td>
    <td align="center"><%= link_to 'Edit', edit_department_path(department) %></td>
    <td align="center"><%= link_to 'Destroy', department, :confirm => 'Are you sure?', :method => :delete %></td>




    <td align="center"><%= link_to '显示', department %></td>
    <td align="center"><%= link_to '修改', edit_department_path(department) %></td>
    <td align="center"><%= link_to '删除', department, :confirm => 'Are you sure?', :method => :delete %></td>


解决此类问题的方法是:
在environment.rb文件中添加以下两句代码:
  $KCODE= "utf-8"
  ActionController::Base.default_charset=('utf-8')

浏览效果如下:
中文乱码显示解决方法大全

    现在的中文界面看起来是不是比起自动生成后的英文界面清晰、容易操作多了呀?(相对于中国人来说,如果是外国人就例外了啦。嘻嘻!!*^_^*)