0

我一直試圖使用1.9.2版本中沒有構建的gem'字符編碼',但是它在1.8.7中做了,但是即使我需要'編碼/ character/utf-8'我仍然不能做最簡單的編碼。在Ruby 1.8.7或1.9.2中編碼

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」,這似乎也沒有做到。 謝謝

回答

3

恐怕我不明白你的問題。您是否遇到源代碼文件的問題?我已經在控制檯和紅寶石腳本(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/

+0

謝謝:)我覺得有點呃是啊 – Davinj 2010-10-02 00:25:31

1

這個工作沒有C擴展和1.8/1.9,不是所有的字符串方法的工作(但他們很容易添加)

https://github.com/grosser/string19

require 'rubygems' 
require 'string19' 
String19('hëllö').length == 5 
相關問題