`

ruby/rails中的中文处理

阅读更多
ruby/rails中的中文处理


原文:http://www.aitic.net/bbs/thread-383-1-1.html

       由于当前的ruby并不支持unicode, 所以中文相关的处理在ruby中一直比较模糊,基本上是各自尝试的路子, 我也列出一些帮助自己整理思路
utf8和unicode的关系
utf其实是(Unicode Translation Format), 也就是unicode在传输时候的编码,有utf8和utf16等多种编码, 其实uf8是一个对中文字很不友好的编码, 为什么呢,因为在utf8中,一个中文是占用3个字节,而一个英文ascii字符却只占用1个字节, 这样一方面使得中文体积膨胀较厉害,另外一方面也不能简单的通过计算字节数来推算字符数. utf16就比较正常,每个字符占用两个字节.但是目前utf16已经后面的utf32应用较少, utf8 是比较公认的编码
utf8 还是 gb2312/gbk
我个人选择utf8,因为我觉得gb2312/gbk不是通用编码,如果使用可能还会有其他问题(比如多语言支持)
转换编码
我们需要require 'iconv' 库, 然后执行
Iconv.conv("utf8","GBK","....") #把字符由GBK转换为UTF8
当源字符集中含有非法编码的时候,我们需要告诉iconv忽略, 否则iconv会报错停止
Iconv.conv("utf8//IGNORE","GBK//IGNORE","....")
utf8 的中文操作:
计算字符数:
在默认的ruby环境下面, 需要执行

require 'jcode'
$KCODE='u' # 或者$KCODE='UTF8' 两者是等价的

计算字符数:
使用jsize或者jlength
"你好".size # 6
"你好".jsize # 2

截取字符操作
"你好"[0,1] #乱码
"你好".scan(/./)[0,1].join # "你"

当然还有另外一个办法:
利用utf16编码每个字都是2个字节(头还有两个字节)的特点,我们可以先把字符转换为utf16,然后按照[0,n*2+2]的方法截取前n个字符 (试验成功.求证中)
Iconv.conv("UTF8","UTF16",Iconv.conv("UTF16","UTF8","你好a中b文")[0,8]) #你好a
分享到:
评论

相关推荐

    Ruby On Rails中文教材(PDF)

    本中文教材《Ruby On Rails》可能是针对初学者和有一定编程基础的开发者设计的,通过PDF格式提供,便于读者在线阅读或离线保存。PDF文档通常包含详细的教程、实例代码和可能的练习题,旨在帮助学习者全面了解和掌握...

    Ruby on Rails中文指南

    在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...

    Ruby on Rails 4 Tutorial 中文版

    在阅读《Ruby on Rails 4 Tutorial》的过程中,你将深入理解MVC(Model-View-Controller)架构模式,它是Rails的核心设计思想。Model代表数据模型,负责与数据库交互;View是用户界面,展示数据;Controller作为两者...

    Ruby on Rails 指南 v5.0.1 中文版

    ### Ruby on Rails 指南 v5.0.1 中文版 #### Rails入门 - **前提条件**:为了能够顺利地开始Rails的学习之旅,读者需要具备一定的Ruby语言基础,并且对Web开发有一定的了解。 - **Rails是什么?**:Rails是一种...

    Ruby For Rails(英文版)(清晰文字pdf)

    《Ruby for Rails》是一本不可或缺的教程,它不仅教授Ruby的基本语法和高级特性,更重要的是教会读者如何将这些知识应用于Rails的实际开发中。通过这本书的学习,无论是新手还是经验丰富的开发者都能够获得巨大的...

    中文版的Ruby On Rails实践(PDF)

    这个中文版的《Ruby On Rails实践》PDF文档,无疑为中文学习者提供了一条理解这一强大框架的捷径。 Rails的核心理念是“约定优于配置”(Convention Over Configuration),它通过默认设置简化了许多常见的编程任务...

    Ruby for Rails中文版》.(美)David Black ).zip

    《Ruby for Rails中文版》是美国作者David Black所著的一本专为Rails开发者介绍Ruby语言的书籍,旨在帮助读者深入理解Ruby的基础与Rails框架的内在联系。Ruby是一种面向对象的、动态类型的编程语言,它的简洁语法和...

    ruby on rails资料

    在“ruby资料.rar”、“ruby中文文档.rar”和“Ruby语言中文教程.rar”这些压缩包中,你将找到更多关于Ruby和Rails的资源,包括但不限于示例代码、项目模板、实战教程等,这些都是进一步学习和提高的好材料。...

    ruby on rails 教程

    **描述解析:**“台湾朋友写的ruby on rails教程”表明此教程由台湾地区作者撰写,这可能意味着文档中会使用简体中文,并且可能包含针对中文环境或台湾地区特定需求的指导建议。 #### 环境准备:跨平台安装与配置 ...

    Ruby On Rails开发实例-源代码

    在Ruby on Rails中,Model负责处理数据和业务逻辑,通常是与数据库交互的部分;View则负责展示用户界面,是用户看到和交互的部分;Controller作为Model和View之间的桥梁,负责处理用户请求并传递数据给View。 "Ruby...

    <<Ruby for Rails中文版>>源代码

    《Ruby for Rails中文版》是一本深入探讨Ruby on Rails框架的书籍,它的源代码提供了丰富的实践示例,帮助读者更好地理解和应用Rails开发技巧。在这个压缩包中,包含了多个与Rails编程相关的文件,如`r4rmusic-1`、`...

    Ubuntu 11.04安装Ruby on rails 连接MySQL数据库.pdf

    在Ubuntu 11.04环境中,安装MySQL数据库是部署Ruby on Rails应用的重要步骤之一。首先,通过打开终端并执行以下命令进行安装: ```bash sudo apt-get install mysql-server ``` 在安装过程中,系统会提示输入MySQL...

    ruby on rails合集

    这个压缩包文件集合包含了关于Ruby on Rails的多个资料,包括可能的英文教程和中文教程,为学习和深入理解RoR提供了一站式资源。 RoR的核心理念是“约定优于配置”(Convention over Configuration, CoC),这意味...

    ruby 中文文档 必备资料

    在Ruby中,异常类是继承自`StandardError`的,你可以自定义异常类来处理特定类型的错误。 Ruby on Rails是Ruby最著名的Web开发框架,它遵循MVC(模型-视图-控制器)架构模式。这份文档可能也涵盖了Rails的相关内容...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁明了,易于理解。包括变量(局部变量、实例变量、类变量和全局变量)、常量、数据类型(如字符串、数字、布尔值、数组、哈希)...

    rails指南 中文版

    Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...

    ruby on rails

    Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,以其“Convention over Configuration”(约定优于配置)...这份“Ruby语言中文教程”将引导你深入理解Ruby语言,为掌握Rails打下坚实基础。

    Ruby-RailsAdmin一个Rails引擎提供了一个易于使用的界面来管理您的数据

    Ruby on Rails 是一款广受欢迎的Web开发框架,它以其MVC(模型-视图-控制器)架构模式和生产力导向的设计理念赢得了开发者们的喜爱。RailsAdmin 是一个基于Ruby on Rails的后台管理界面引擎,它允许开发者快速创建和...

    Rails的中文乱码问题

    标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...

Global site tag (gtag.js) - Google Analytics