`

在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源文件里输入中文了。

分享到:
评论

相关推荐

    RubyOnRails教程中文版

    通过阅读"Ruby on Rails 敏捷开发实践.pdf"和运行"RubyOnRails教程中文版.exe",你可以深入了解Rails的各个方面,并逐步掌握这个强大的Web开发框架。不断实践,你将能够利用Rails快速构建高质量的Web应用。

    rubyonrails mysql安装详解

    - 访问官网获取最新版本的Ruby源码:[Ruby 1.8.7](http://www.ruby-lang.org/en/news/2010/08/16/ruby-1-8-7-p302-is-released/) - 使用wget命令下载源码包: ``` wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/...

    Ruby-TestTrack的RubyonRails客户端

    Ruby-TestTrack的Ruby on Rails客户端是一个专门为TestTrack集成到Ruby on Rails应用程序中的工具,它允许开发者在Rails环境中轻松地与TestTrack系统交互,进行测试管理和缺陷跟踪。这个客户端库通常用于软件开发...

    课程设计--在线考试系统。使用RubyonRails实现。在服务器上部署后可以由老师管理其考试,并发布给学生参加考试.zip

    课程设计--在线考试系统。使用RubyonRails实现。在服务器上部署后可以由老师管理其考试,并发布给学生参加考试。由于需要

    discourse-rubyonrails-theme

    在使用 "discourse-rubyonrails-theme" 时,你需要掌握以下关键知识点: 1. **Ruby on Rails框架**:理解Rails的基本架构,包括MVC(模型-视图-控制器)模式,路由,数据库交互(ActiveRecord),以及Rails的约定...

    Ruby-RubyonRails应用程序的安全注意事项清单

    8. **XSS防护**: - 使用`h`或`html_safe`方法对输出内容进行转义,防止跨站脚本攻击。 - 使用`sanitize`方法清除不安全的HTML元素。 - 考虑启用ActionView的自动转义策略。 9. **CSRF防护**: - 添加`protect_...

    sample-rubyonrails-postgres-heroku

    此示例演示了如何为部署在 Heroku 上的 Rails+Postgres 项目设置持续集成和部署。 有关更详细的文档,请参阅 Shippable 的持续部署部分: : 此示例是为 Shippable 构建的,这是一个基于 docker 的持续集成和部署...

    Ruby-Tracks是一个采用RubyonRails构建的GTDWeb应用程序

    8. **Web安全**:了解防止SQL注入、跨站脚本攻击(XSS)和其他安全风险的最佳实践。 9. **前端技术**:Rails默认使用ERB或Haml模板语言,也可能涉及JavaScript(如jQuery)、CSS(Sass/SCSS)等前端技术。 10. **...

    rubyonrails

    本资源提供了中文版的教程,旨在帮助初学者逐步掌握如何使用Ruby on Rails构建应用程序。 1. **Ruby语言基础**:Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。在学习...

    RubyOnRails做的博客

    在这个"RubyOnRails做的博客"项目中,我们可以看到作者用RoR实现了一个功能齐全的博客系统。下面将详细探讨RoR框架的核心特性以及在构建博客系统时可能涉及的关键知识点。 1. MVC架构:RoR中的MVC模式使得开发者...

    Ruby-Airbrake官方Airbrake的RubyonRails库

    它允许开发者在应用程序运行过程中捕获、记录和跟踪错误,提供了一种高效且方便的方式来管理和解决可能出现的问题。Airbrake不仅仅是一个日志系统,而是一个强大的错误监控解决方案,能够帮助开发者及时发现并修复...

    RubyOnRails的一个入门小例子

    3. 新建Rails项目:`rails new`命令的使用及项目结构解析。 4. 数据库配置:`config/database.yml`文件的配置与SQLite、MySQL等数据库的连接。 5. ActiveRecord:理解模型和数据库之间的关系,以及如何创建、查询、...

    rubyonrails的api文档

    6. **ActiveSupport**:这是一个工具库,包含了各种实用的类和模块,如时间处理、字符串操作、数组和哈希的扩展等,极大地增强了Ruby的内置功能。 7. **Rails生成器(Generators)**:Rails提供了一系列命令行工具...

    Ruby-在一个简单的UI中管理您的RubyOnRails模型关系和迁移

    本项目“Ruby-在一个简单的UI中管理您的RubyOnRails模型关系和迁移”旨在提供一个直观的用户界面,以便开发者能够更加方便地管理和操作Rails应用中的数据模型、关系和数据库迁移。 在Rails中,数据模型(Model)...

    Ruby-RubyonRails5项目的基础应用程序

    8. **测试**:Rails 5 强调 TDD(测试驱动开发),内置了 RSpec 和 Capybara 这样的测试工具,用于编写功能测试和断言。基础应用程序可能已经配置好了测试环境,并包含了一些示例测试。 9. **Action Cable**:Rails...

    rubyOnRails-guide

    ruby on rails 官方最新教程 2015.11月,下载

    毕业设计-通用web信息采集系统RubyonRails

    8. **测试驱动开发(TDD)**: Rails鼓励使用Test::Unit、RSpec等测试框架进行TDD,确保代码质量。 9. **Gem依赖管理**: 使用Bundler管理项目的外部依赖,如Nokogiri、HTTParty等。 10. **部署与服务器配置**: 项目...

    Ruby-社区驱动的RubyonRails4风格指南

    1. 避免在模型中使用`update_attributes`,而使用更安全的`update`或`update!`,以便捕获可能的错误。 2. 使用`scope`定义查询范围,而不是在控制器或视图中编写复杂的SQL。 3. 使用`has_many :through`关联来管理多...

    Ruby-robinhoodonrails一个基于RubyonRails的Web仪表盘

    在这个特定的项目“Ruby-robinhood-onrails”中,开发者创建了一个基于Ruby on Rails的Web仪表盘,专门与免费交易平台Robinhood进行交互。这个仪表盘允许用户通过私有API访问和管理他们的Robinhood账户,提供了更加...

Global site tag (gtag.js) - Google Analytics