2009-08-24 8 views
5

Leider funktioniert der Unicode 0.1 (sudo gem install unicode) nicht auf Ruby 1.9. Ich habe folgendes Code-Schnipsel:Wie ersetzt man das Unicode-Juwel auf Ruby 1.9?

Ich benutze es um Titel in Permalink zu konvertieren, ohne akzentuierte Zeichen zu entfernen.

Gibt es eine Möglichkeit, solche Texte mit pack oder unpack Methoden zu konvertieren?

+0

Sie sollten durch die Ruby-Talk-Archive graben. Ich bin mir ziemlich sicher, dass der Autor des Unicode-Edelsteins in den letzten Tagen/Wochen dort eine neue Version angekündigt hat, und ich bin mir auch ziemlich sicher, dass Ruby 1.9 in diesem Thread diskutiert wurde. Ich habe den Thread jedoch nicht wirklich gelesen, daher habe ich keine Besonderheiten. –

+0

Eigentlich war das * nicht * das Unicode-Juwel, sondern das von @molf unten erwähnte Unicode-Utils-Juwel. (Es war auch nicht in den letzten Tagen, es war vor 3 Monaten.) –

Antwort

13

Update: eine bessere Option sein kann, das Juwel unicode_utils zu verwenden, die speziell für diese fehlenden Funktionen erstellt wurde:

require "unicode_utils" 
UnicodeUtils.nfkd("áéíóúç").gsub(/[^\x00-\x7F]/,'').to_s 
#=> "aeiouc" 

Gibt es eine Möglichkeit, Sie auf Rails Active verlassen können? Dann können Sie folgendes tun:

require "activesupport" 
mb_str = ActiveSupport::Multibyte::Chars.new("áéíóúç") 
mb_str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s 
#=> "aeiouc" 

ActiveSupport::Multibyte geschrieben wurde UTF-8/Unicode-Unterstützung zu Ruby 1.8 zu bringen, sondern arbeitet in 1.9 auch in Ordnung. Sie können möglicherweise einige von the code ausleihen, wenn Sie es nicht als externe Abhängigkeit wollen.

+0

Netter Ersatz! Ich verwende Unicode gem auf einem Rails-Plugin, also kann ich mich darauf verlassen! Danke vielmals! Wäre schön, einen Ersatz nur mit Ruby 1.9 zu haben, da es eine Menge Edelsteine ​​gibt, die ActiveSupport verwenden, und ActiveSupport möglicherweise keine Wahl für alle ist. –

+0

Das ist der Punkt, über den ich in meinem obigen Kommentar nachgedacht habe. Danke, dass du mich daran erinnert hast! Ich werde das jetzt wirklich in meinem Spielzeugprojekt brauchen. –

+0

Ich denke, es ist besser, den Unicode-Utils-Edelstein anstelle von ActiveSupport zu verwenden, wenn Unicode auf Edelsteinen ersetzt wird! Vielen Dank! ;) –

1

Es gibt auch I18n.transliterate('string') Methode in Rails. Klappt wunderbar.

+0

Ich kann keine Referenzen für diese Methode finden, können Sie einen Link zur Dokumentation bereitstellen? Vielen Dank! – dgilperez

+0

'http: // apidock.com/rails/ActiveSupport/Inflector/Transliterate' –

+0

Ich aktualisierte meine Antwort, sieht aus wie' # to_latin' wurde entfernt. –