Ruby 板


LINE

出自我的Blog http://lightyror.blogspot.com/2006/10/rails-unicode.html 如何在 Rails 上面使用 Unicode 是个好问题 基本上,虽然 Ruby 不完整支援 Unicode 但是使用上问题不大 将 Unicode 资料从资料库取出,操作,output 出 或是在程式里面使用像是 if a == '我是中文呀' 这类的东西都没有任何问题 但是如果我们讨论到如何在 Rails 上面使用 Unicode就有很多其他的议题了 因为 Rails 牵涉到 Web Server ,HTML,资料库等等外部的程式 一定要每个节点Unicode设定正确才会正常显示 Rails Conf 2006 Eourpe 有讨论到 Unicode for Rails 的议题 里面讲到几个基本的使用方式 以下都是使用UTF-8当作范例 1. 你的HTML 是否正确宣告 Unicode ? 请在 head 里面加入 < meta equiv="Content-type" content="text/html; charset=utf-8" > 这样的选项 2. 如果使用到字串的函数,你是否有呼叫 KCODE 这个 lib 如果你想使用字串相关的函数,Ruby 是会误判Unicode字串里面长度之类的属性的 我们必须在 config/enviroment.rb 里面加入 $KCODE='utf8' 这样的选项,Rails 才会切到 UTF-8 Mode 如此,regular expression 如果使用 u flag 就可以判断 UTF-8 字串 pack / unpack 才会 work 字串的长度才会正确 3. 资料库里面是否正确使用Unicode 编码 如果是 MySQL ,请用 phpMyAdmin 确定您的编码是否正确 (话说回来,phpMyAdmin 新版居然有显示 utf-8 乱码的问题.... ) 4. 资料库连线是否正确使用 请看看您的 config/database.yml ,是否有下面红字那一行 他会将连线的mode 切换到 utf-8 production: user: root host: localhost encoding: utf8 5. Web Server 是否预设使用 UTF-8 编码 Apache 必须设定 AddDefaultCharset utf-8 Lighttpd 要在 mime type 设定 mimetype.assign = ( ".css" => "text/css; charset=utf-8", ".gif" => "image/gif", ".htm" => "text/html; charset=utf-8", ".html" => "text/html; charset=utf-8", ".jpeg" => "image/jpeg", ".jpg" => "image/jpeg", ".js" => "text/javascript; charset=utf-8", ".png" => "image/png", ".swf" => "application/x-shockwave-flash", ".txt" => "text/plain; charset=utf-8" ) 不然可能会有 Javascript 显示中文的问题 (老实说,我并不太确定如果 Web Server 不设定UTF-8 ,那是否一定会有问题,反正我都这样设定好) 6. 当这些都确定无误,还有问题,请确认 你的档案编码是否为 Unicode 编码 通常这个问题是最常发生的 7. 我们可以写一个 filter def set_encoding headers['Content-Type'] ||= 'text/html' if headers['Content-Type'].starts_with?('text/') and !headers['Content-Type'].include?('charset=') headers['Content-Type'] += '; charset=utf-8' end end 让 render 出来的 html 都是 UTF-8 encoding 但是 Rails 1.2 将会在 config 里面新增 ActionController::Base.default_charset=(encoding) 这样的设定 所以其实我们不需要写 filter 就可以直接 render unicode 档案 -- lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog http://lightyror.blogspot.com/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.103.141







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP