Question

J'ai une tâche Rake (dans le répertoire lib / tasks) que je lance avec cron sur mon hébergement Web partagé. Le problème est que je veux comparer une chaîne UTF-8 à l'aide de la déclaration de casse, mais mon code source n'est pas codé en UTF-8. Si je sauvegarde le code source au format UTF-8, une erreur se produit lorsque je tente de le démarrer: (

Qu'est-ce que je dois faire?

Peut-on lire cette chaîne à partir d'un fichier txt UTF-8 externe?

P.S. J'utilise Ruby 1.8

P.S. Je veux dire comparer ainsi:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Était-ce utile?

La solution

Je dirais que vous devez modifier votre éditeur de texte car la nomenclature n'est pas pour UTF-8. UTF-8 n'est pas dépendant de l'ordre des octets. Voir le texte du lien pour plus de détails.

Autres conseils

J'ai constaté que mon problème n'était pas en cas de déclaration

Le problème était que, lorsque je sauvegardais mon code source au format UTF-8, mon éditeur de texte ajoutait 3 octets (BOM) au début pour indiquer que le codage était UTF-8.

  

Q: Qu'est-ce qu'une nomenclature?

     

A: Une marque d'ordre d'octet (BOM) est constituée du code de caractère.   U + FEFF au début d’un flux de données, où il peut être utilisé comme   signature définissant l’ordre des octets et la forme de codage, principalement des   fichiers en texte clair. Sous certains protocoles de niveau supérieur, l'utilisation d'une nomenclature peut être   obligatoire (ou interdit) dans le flux de données Unicode défini dans ce protocole.

UTF-8, UTF-16, UTF-32 & amp; Nomenclature

L’erreur que j’obtiens est la suivante:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression

Essayez d’utiliser la mb_chars méthode issue de la ActiveSupport de Rails. cadre:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top