Comment utiliser les méthodes String sur les caractères UTF-8? Par exemple, j'ai une chaîne avec des caractères cyrilliques, donc quand j'utilise string.upcase
cela ne fonctionne pas.Comment utiliser les méthodes String sur les caractères UTF-8?
Répondre
Les rails active_support gem possède des extensions de chaîne qui peuvent gérer cela.
Par exemple:
# $ sudo gem install activesupport
require 'active_support/core_ext/string'
'Laurent, où sont les tests ?'.mb_chars.upcase.to_s
# outputs => "LAURENT, OÙ SONT LES TESTS ?"
Cela ne fonctionne pas pour les caractères cyrilliques met "ТОВА Е ТЕСТ" .downcase => "ТОВА Е ТЕСТ" –
Ruby ne supporte que des conversions de cas sur les lettres A
– Z
et a
– z
. La raison de ceci est simplement que les conversions de cas pour d'autres lettres ne sont pas bien définies. Par exemple, en turc 'I'.downcase # => 'ı'
et 'i'.upcase # => 'İ'
, mais en français 'I'.downcase # => 'i'
et 'i'.upcase # => 'I'
. Ruby devrait connaître non seulement l'encodage des caractères, mais aussi le langage pour le faire correctement.
Pire encore, en allemand
'MASSE'.downcase
est soit
'maße' # "measurements"
'masse' # "mass"
En d'autres termes: vous devez réellement comprendre le texte, à savoir que vous avez besoin d'une AI entière, faire les conversions de cas correctement.
Et moi-même ai effectivement accidentellement construit une phrase une fois, qui était indécidable même pour un humain.
En bref: c'est tout simplement impossible à faire correctement, c'est pourquoi Ruby ne le fait pas . Cependant, il existe des bibliothèques tierces, comme la bibliothèque Unicode et ActiveSupport, qui prennent en charge un sous-ensemble un peu plus grand de caractères.
İyi cevap, Jörg. –
"ТЕКСТ".mb_chars.downcase # => "текст"
Malheureusement, il n'y a pas de support pour downcase/upcase dans Ruby 1.9, étant donné les problèmes décrits dans d'autres publications. Encore vous pouvez écrire votre propre gemme, cela ajoutera le support pour cyrillic. Vous pouvez regarder mon gem for Polish - tourner le pliage en charge des cas est aussi facile que:
gem 'string_case_pl'
Il fournit également la chaîne de tri appropriée pour le polonais.
- 1. Comment décoder les caractères UTF8 avec JSON sur iPhone?
- 2. TCPDF UTF8 - l'espacement entre les caractères bizarres
- 3. Comment remplacer les caractères String en C#
- 4. empêcher les htmlentities de détruire les caractères utf8 ಠ_ಠ
- 5. Comment afficher correctement les caractères UTF8 dans Android?
- 6. Pourquoi xmltextreader convertit automatiquement les caractères utf8 encodés en html en chaîne utf8?
- 7. Sortie C# UTF8 garder les caractères encodés intacts
- 8. entités charset-utf8 et caractères
- 9. Smarty: les caractères spéciaux sont modifiés non désirés- utf8
- 10. Impossible d'insérer des caractères utf8 sur mysql (avec collation utf8, jeu de caractères et jeu de caractères)
- 11. Utiliser Groovy MetaClass pour remplacer les méthodes
- 12. Comment utiliser les caractères turcs en XML?
- 13. Utiliser des décorateurs python sur les méthodes de classe et les méthodes de sous-classes
- 14. Utiliser aspectj pour profiler les méthodes sélectionnées
- 15. Ruby Regular Expression pour faire correspondre les mots, y compris les accents et autres caractères UTF8
- 16. Comparaison de caractères utf8 PostgreSQL
- 17. Comment utiliser les caractères Unicode dans les appareils FitNesse?
- 18. Utiliser "devrait" avec les méthodes de classe?
- 19. JavaME: Comment utiliser platformRequest utiliser les caractères spéciaux
- 20. Le serveur Mysql ne prend pas en charge les caractères utf8 codés sur 4 octets.
- 21. comment maintenir les espaces entre les caractères?
- 22. Comment écrire des fichiers avec des caractères UTF8 (lisibles)?
- 23. urls encodés utf8 dans les rails 2.3.4
- 24. lecture UTF8 caractères en utilisant innerHTML retourne 0xfffd pour tous les caractères
- 25. Utiliser les caractères latins dans appengine
- 26. Confusion sur les méthodes anonymes paramètres
- 27. Quand utiliser les méthodes partagées dans .NET
- 28. Méthodes non documentées: les utiliser ou non?
- 29. NSAutoreleasePool portant sur les méthodes?
- 30. mysql utf8 caractères turcs pas correct reconnu
Veuillez nous dire si vous utilisez 1.8 ou 1.9, le comportement a changé de manière significative en 1.9 en ce qui concerne la manipulation des encodages. Dans 1.8 chaînes étaient des tableaux d'octets, dans 1.9 ils sont des tableaux de caractères. – Theo