`
lllyq
  • 浏览: 34609 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论

解决ruby 1.9字符串不兼容编码的问题

    博客分类:
  • ruby
阅读更多
最近又折腾起ruby,打算用1.9,发现encoding有不少问题,先是“invalid multibyte char (US-ASCII)
”,,这问题还好解决,magic comment就可以,但是也很土。另外一个就是“incompatible character encodings: UTF-8 and ASCII-8BIT”,GG了一下也没什么好办法,设置Encoding.default_external基本没用,default_internal还有很多gem不支持,也不行。最后还是自己想办法重写String <<方法强制所有encoding为UTF-8,暴力了一点,但起码能解决问题,不过性能是比原来的<<方法慢,耗时是原来的3倍,但还能接受,真要性能,关键部分还是可以调用原来的<<方法。代码列在后面。

1.9的encoding整成这样真令我失望,看看Yehuda的解释 http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/,所谓的原因是要支持更多encoding,对日文俄文更好的支持等等。

if RUBY_VERSION > '1.9'
Encoding.default_external = Encoding::UTF_8
Fixnum.class_eval do
  alias_method :old_to_s, :to_s
  def to_s
    old_to_s.force_encoding("UTF-8")
  end
end
Array.class_eval do
  alias_method :old_pack, :pack
  def pack(*args)
    old_pack(*args).force_encoding("UTF-8")
  end
end
end
0
0
分享到:
评论

相关推荐

    为何Ruby 1.9的不兼容性会导致原有Ruby代码无法工作

    Ruby 1.9 的发布对Ruby社区带来了显著的变化,尤其是其与之前的1.8版本之间的不兼容性。这种不兼容性源于对Ruby语言及其核心库的深入修改,目的是提升语言性能和规范。Ruby 1.9.0的推出并非完全稳定,Matz,即Ruby的...

    Programming Ruby 1.9 (3rd edition)和源码

    - 字符串编码:Ruby 1.9引入了对多种字符编码的支持,使得处理多语言文本变得更加灵活。 - 更强的错误检测:在1.9版本中,语法错误和类型检查更加严格,减少了运行时错误。 - 全新的语法特性:如内建的块参数,...

    windows下安装Ruby 1.9 二进制zip包

    在Windows环境下安装Ruby 1.9,通常会涉及到编译环境的配置,因为Ruby的源码需要通过编译才能在Windows系统上运行。不过,如果你选择的是预编译的二进制zip包,这个过程就会简化很多。下面,我们将详细讨论如何通过...

    Programming Ruby 1.9

    1. **编码和字符集**:Ruby 1.9引入了对Unicode的全面支持,通过默认的内部编码(Encoding.default_internal)和外部编码(Encoding.default_external)来处理字符串。这使得处理多种语言和字符集变得更加容易。 2....

    透视Ruby 1.9的Lambda函数

    这种改变解决了早期版本中的一些问题,使得Block的使用更加安全和灵活。 总之,Ruby 1.9对Lambda函数的改进使得开发者可以更加高效、优雅地使用这一特性。新的语法不仅简化了Lambda的定义,而且提升了代码的可读性...

    Programming Ruby 1.9 The Pragmatic Programmers' Guide

    Ruby 1.9是Ruby的一个重要版本,引入了许多改进和新特性,包括性能优化、新的字符串编码系统、改进的模块和类的加载机制等。 在本书中,读者将学习到以下核心知识点: 1. **基础语法**:了解Ruby的基本数据类型,...

    Programming Ruby 1.9 3rd edition

    ### Programming Ruby 1.9 3rd Edition:深入探索Ruby编程语言 #### 一、书籍概览 《Programming Ruby 1.9》是第三版,专注于介绍Ruby 1.9.2版本,由Dave Thomas、Chad Fowler和Andy Hunt共同编写。这本书由The ...

    ruby 1.9 教程

    - **基本Ruby语法**: 包括变量声明、字符串处理、数字操作等基础概念。 - **数组和哈希**: 数组用于存储多个元素,而哈希则是一种键值对的数据结构,这两者都是Ruby中非常重要的数据类型。 - **符号(Symbol)**: Ruby中...

    Ruby-Unicode字符串调试帮助

    4. **异常处理**:在处理Unicode字符串时,可能会遇到编码错误或不兼容的问题。使用`begin-rescue-end`块捕获并处理这些异常,例如`rescue Encoding::CompatibilityError`,可以提供更稳健的代码。 5. **第三方库**...

    (ruby 1.9 开发)Rango

    ### Rango:Ruby 1.9 上的轻量级网络开发框架 Rango 是一个基于 Ruby 1.9 的轻量级 Web 开发框架,它为开发者提供了灵活且强大的工具来构建网站。与 Sinatra 相比,Rango 更加健壮;而与 Rails 或 Merb 相比,它的...

    Programming Ruby 1.9 & 2.0 The Pragmatic Programmers’ Guide 4th Edition

    Ruby是一种快速发展的激动人心的动态语言,本书是Ruby 1.9和Ruby 2.0这两个最新版本的完整参考指南。Ruby是一种完全面向对象的语言,类似于经典的面向对象语言Smalltalk。与Smalltalk一样,它是动态类型的,但与...

    ruby编码转换

    本篇文章将详细介绍如何在Ruby 1.9环境中进行编码转换,包括如何查看字符串的编码信息、如何强制更改字符串的编码以及如何使用`encode`方法来进行实际的编码转换。 #### 一、获取字符串的当前编码 在Ruby 1.9中,...

    Programming Ruby 1.9 (Pragmatic Bookshelf 2009).pdf

    《Programming Ruby 1.9》一书由Dave Thomas、Chad Fowler与Andy Hunt共同编写,是Pragmatic Bookshelf出版的一部权威性指南,旨在帮助读者深入理解和掌握Ruby编程语言的1.9版本。该书不仅是对原版《Programming ...

    [Ruby] Ruby 1.9 & 2.0 编程 (英文版)

    [Pragmatic Bookshelf] Ruby 1.9 & 2.0 编程 (英文版) [Pragmatic Bookshelf] Programming Ruby 1.9 & 2.0 The Pragmatic Programmers' Guide 4th Edition (E-Book) ☆ 出版信息:☆ [作者信息] Dave Thomas , ...

    Pragmatic.Programming.Ruby.1.9.Apr.2009.pdf

    Ruby 1.9是Ruby语言的一个重大更新,它引入了多项改进和新特性,包括但不限于性能优化、新的字符串处理方式、改进的数组和哈希表操作、以及更强大的元编程能力。这些变化使得Ruby 1.9在处理大数据量和复杂逻辑时更加...

    Ruby编程语言_涵盖Ruby 1.8和1.9

    Ruby是一种面向对象的脚本语言,由日本的松本行弘(Yukihiro ...同时,实践是检验理解的最好方式,通过实际编写项目或解决编程问题,你的Ruby技能将会得到提升。记得,持续学习和探索是成为熟练Ruby开发者的不二法门。

    ruby的二进制字符串与hex互转,二进制字符串与整数互转的工具函数

    本资源是ruby代码,提供了一系列封装好的函数,用于快速进行转换,一个函数搞定,包括如下转换,二进制字符串与hex字符串的互转。二进制字符串与整数互转,包括uint8,uin16,uint32, 以及本地字节序和网络字节序两种...

Global site tag (gtag.js) - Google Analytics