Salut á tous,
J’utilise la fonction truncate qui permet d’afficher les x premiers
caractéres d’une chaine. Tous se passe bien et les accents sont biens
affichés sauf quand le xieme caractere est un caractere á accent. Par
exemple quand je fais truncate(ad.content, 80) si le caractere 80 est
un ‘é’ ca affiche un point dinterrogation ou un signe bizzar.
Quelqu’un sait-il comment éviter cette erreur?
Salut á tous,
J’utilise la fonction truncate qui permet d’afficher les x premiers
caractéres d’une chaine. Tous se passe bien et les accents sont biens
affichés sauf quand le xieme caractere est un caractere á accent. Par
exemple quand je fais truncate(ad.content, 80) si le caractere 80 est
un ‘é’ ca affiche un point dinterrogation ou un signe bizzar.
Quelqu’un sait-il comment éviter cette erreur?
Vu le problème, je suppose que tu utilises UTF-8 comme encodage.
Rails (Ruby en fait) n’est pas encore très au point sur la gestion de
cet encodage. La majorité des méthodes liées à la manipulation de
chaînes sont buggués avec UTF-8. Les caractères UTF-8 peuvent être
codés sur 1 à 4 octets alors que les caractères ISO sont codés sur 1
octets. Les méthodes de manipulation des chaînes ne travaillent pas
sur des caractères mais sur des octets et elles se limitent à 1 octet.
Bref, ruby pense traiter ton caractère dans l’ensemble mais en fait
il n’en traite qu’une partie. Il me semble qu’il existe des libs pour
régler ces problèmes mais qu’elles sont très lourdes à l’utilisation.
Je n’ai malheureusement aucun pointeur à te donner.
Bref, ruby pense traiter ton caractère dans l’ensemble mais en fait il
n’en traite qu’une partie. Il me semble qu’il existe des libs pour
régler ces problèmes mais qu’elles sont très lourdes à l’utilisation.
Je n’ai malheureusement aucun pointeur à te donner.
Non, pas du tout. Le problème est exact: ruby ne traite pas
correctement utf8.
Mais des solutions existent: unicode_hacks est un indispensable pour
l’utilisation non américaine de rails:
unicode_hacks http://julik.textdriven.com/svn/tools/rails_plugins/unicode_hacks
Lis les fichiers textes à la racine comme doc.
Nécessite gem unicode.
Il y a une chance que ce soit réglé avec ruby 2.0, dont je ne connais
pas la date.
J’utilise cette bibliothèque, avec postgres en stockage utf8 derrière,
sur mon site symetrie.com.
Teste la recherche et regarde comment les chaînes peuvent être coupées
sans erreur grâce à cette bibliothèque.
Jean-Christophe M.
Symétrie, édition de musique et services multimédia
30 rue Jean-Baptiste Say
69001 LYON (FRANCE)
tél +33 (0)478 29 52 14
fax +33 (0)478 30 01 11
web www.symetrie.com
ok pour ceux que ca interesse, ad.content.first(80) regle le probleme
au lieu de truncate(ad.content, 80).
Avec le plugin unicode ? avec quoi d’autre ?
Personnellement, je doute fort de la solidité de la solution.
L’examen du code de truncate montre que ça a l’air de tenir plus compte
du codage que first, qui est simplement [0…x].
Cependant je veux bien que quelqu’un m’explique pourquoi faire
split(//) coupe plus en caractères utf8 (ou autre) que [0…x]
Jean-Christophe M.
Symétrie, édition de musique et services multimédia
30 rue Jean-Baptiste Say
69001 LYON (FRANCE)
tél +33 (0)478 29 52 14
fax +33 (0)478 30 01 11
web www.symetrie.com
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.