`
- 浏览:
251217 次
- 性别:
- 来自:
山东济南
-
在RubyOnRails里使用UTF-8及中文字符串
结合RubyOnRails官方Wiki上的一些介绍和自己实践写的。这个方法就是在使用rails的内置的长度校验的时候要考虑到中文一般占用3个字符。
Ruby本身不支持UTF-8,但是我们可以使用一些办法使用8bit的字符来储存UTF-8编码后的字符串.但是这会导致一些字符串函数出现问题,可以通过使用jcode包里的函数来替换原来的字符串函数,如length可以用jlength替换。
1、首先,我们需要在public/dispatch.cgi文件的#!/path/to/ruby后面加上-Ku -rjcode
2、然后,需要使用一个before_filter来输出http头,表示使用utf-8字符集。
class ApplicationController < ActionController::Base
before_filter :set_charset
def set_charset
@headers["Content-Type"] = "text/html; charset=utf-8"
end
end
3、接着,如果要在Safari浏览器里使用rails的ajax帮助函数,则必须加入以下代码
class ApplicationController < ActionController::Base
after_filter :fix_unicode_for_safari
# automatically and transparently fiixes utf-8 bug
# with Safari when using xmlhttp
def fix_unicode_for_safari
if @headers["Content-Type"] == "text/html; charset=utf-8" and
@request.env['HTTP_USER_AGENT'].to_s.include? 'AppleWebKit' then
@response.body = @response.body.gsub(/([^\x00-\xa0])/u) { |s| "&#x%x;" % $1.unpack('U')[0] }
end
end
4、另外,可能需要调整数据库的设置能够存储utf-8字符串。
5、必须把rb源文件以及rhtml等模版文件都保存为utf-8格式。
这样你就可以直接在rb源文件里输入中文了。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
RubyOnRails教程中文版
此示例演示了如何为部署在 Heroku 上的 Rails+Postgres 项目设置持续集成和部署。 有关更详细的文档,请参阅 Shippable 的持续部署部分: : 此示例是为 Shippable 构建的,这是一个基于 docker 的持续集成和部署...
rubyonrails中文版,一步一步教你搭建ruby rails的应用,不可多得.
在不使用Devise的情况下在RubyonRails中实现API密钥
完整课程设计及源码,通用web信息采集系统RubyonRails
rubyonrails的api文档,适合那些不希望使用在线手册的朋友
TestTrack的Ruby on Rails客户端
ruby on rails 官方最新教程 2015.11月,下载
Airbrake - 官方Airbrake的Ruby on Rails库(和其他基于Rack的框架)
Tracks是一个采用Ruby on Rails构建的GTD Web应用程序
ruby on rails实践,pdf格式,ruby入门级资料,包括ruby简介,安装方法,编写应用等。
RubyOnRails做的博客,实现了常用的功能,欢迎大家指正
robinhood-on-rails一个基于Ruby on Rails的Web仪表盘,使用免费交易平台Robinhood的私有API
RubyOnRails 官方指南
Apipie - Ruby on Rails API 文档和展示工具使用Ruby语法
Ruby on Rails应用程序的安全注意事项清单
Ruby on Rails 5项目的基础应用程序。 旨在最大限度地减少编写样板代码和执行重复设置任务所花费的时间。
Wicked Pdf - PDF生成器(从HTML)一个Ruby on Rails插件
有时候 ruby配置mysql也许时间烦人的事情 这里有详细的 安装步骤 和错误分析
Ruby on Rails的演讲主题 预习