在Ruby 1.8.7或1.9.2中编码

时间:2010-09-29 03:27:16

标签: ruby-on-rails ruby encoding character-encoding special-characters

我一直在尝试使用不在1.9.2中构建的gem'字符编码',但它在1.8.7中有效,但即使我需要'encoding / character / utf-8',我仍然无法做到最简单的编码。

require 'encoding/character/utf-8'
str = u"hëllö"
str.length
  #=> 5
str.reverse.length
  #=> 5
str[/ël/]
  #=> "ël"

我得到了

ruby-1.8.7-p302 >   # encoding: utf-8
ruby-1.8.7-p302 >   require 'encoding/character/utf-8'
 => nil 
ruby-1.8.7-p302 > str = u"hll"
 => u"hll" 
ruby-1.8.7-p302 > str.length
 => 3 
ruby-1.8.7-p302 >   #=> 5
ruby-1.8.7-p302 >   str.reverse.length
 => 3 
ruby-1.8.7-p302 >   #=> 5
ruby-1.8.7-p302 >   str[/l/]
 => "l" 

我的问题是,是否有一个非常好的编码库可以接受分配或可能所有不同的字符。或者也许使用utf-16?我已经尝试了“#encoding:utf-8”的魔法代码,但似乎也没有。 谢谢

2 个答案:

答案 0 :(得分:3)

我害怕我不明白你的问题。您是否遇到源代码文件问题?我已经在控制台和ruby脚本(1.8.7)中尝试了它,它确实有效。

require 'rubygems'
require 'encoding/character/utf-8'
str = u'hëllö'
puts str.length
puts str.reverse.length
puts str[/ël/]

并且输出按预期工作

5
5
ël

在Ruby 1.9+(我在1.9.2预览版中测试过)中,您不需要库,因为标准库支持编码。 See this post for more information关于它。 http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/

答案 1 :(得分:1)

这没有c扩展,在1.8 / 1.9上,并非所有字符串方法都有效(但它们很容易添加)

https://github.com/grosser/string19

require 'rubygems'
require 'string19'
String19('hëllö').length == 5