Кодировка в Ruby 1.8.7 или 1.9.2 - PullRequest
       45

Кодировка в Ruby 1.8.7 или 1.9.2

0 голосов
/ 29 сентября 2010

Я пытался использовать гем 'Character-Encodings', который не встроен в 1.9.2, но в 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" 

Мой вопрос в том, есть ли действительно хорошая библиотека кодирования, которая может принимать allot или, возможно, все различные символы. Или, может быть, использовать UTF-16? Я попробовал магический код "# encoding: utf-8", который, похоже, тоже этого не делал. Спасибо

Ответы [ 2 ]

3 голосов
/ 29 сентября 2010

Боюсь, я не понимаю вашего вопроса. У вас есть проблемы с файлом исходного кода? Я пробовал это как в консоли, так и в скрипте 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) вам не нужна библиотека, так как кодирование поддерживается стандартной библиотекой. См. Этот пост для получения дополнительной информации об этом. http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/

1 голос
/ 07 июля 2011

это работает без расширений c и на 1.8 / 1.9 не все строковые методы работают (но их легко добавить)

https://github.com/grosser/string19

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