Ruby中,文字编码的设定是通过全局变量$KCODE来进行,没有对编码方式进行正确的话,有可能会出现乱码的问题.要进行$KCODE设定的话,可以在config/environment文件的前面加上
$KCODE = "UTF8"
这里假设进行UTF-8的设定,如果没有特殊要求的话,推荐使用UTF-8.特别是利用AJAX的时候,UTF-8是必须的.
2.charset参数
为了在浏览器中正确显示文字,那么对Content-Type中charset参数的设定就是必要的了.这个参数除了在VIEW文件中可以设定,在controller文件中也同样可以设定.为了不重复代码,推荐在app/controllers/application.rb中的ApplicationController里进行设置,方法如下.
class ApplicationController < ActionController::Base
before_filter :set_charset
private
def set_charset
headers["Content-Type"] = "text/html;charset=UTF-8"
end
3.数据库的设定
文字无乱码的存入数据库,以及从数据库中取出来,那么就必须对数据库以及database.yml文件的编码方式进行设定了.
MySQL中,数据库创建时可以进行编码方式的指定.如
create database pro_development default character set utf8;
PostgreSQL中也一样可以进行设定,如
createdb --encoding UTF8 pro_development
另外配置文件的设定,在database.yml中指定encoding.如
development:
adapter: sqlite3
database: dum_development
timeout: 5000
encoding: utf8