Ruby Regex Error: incompatible encodage regexp match (ASCII 8 BITS regexp avec chaîne UTF-8)
j'obtiens deux erreurs, toutes les deux tournant autour de l'encodage et toutes les deux liées.
la première erreur (techniquement, un avertissement) que j'obtiens lors du démarrage de WEBrick:
/Users/USERNAME/example/config/initializers/bb-ruby.rb:54: warning: invalid Unicode Property P: /:-?P/
La ligne de référence est: /:-?P/,
c'est juste un peu de regex, finalement une partie de ce bloc:
@@tags['Razzing'] = [
/:-?P/,
'<img src="/assets/emoticons/razzing.png">',
'Razzing',
':P',
:razzing]
ensuite, j'obtiens aussi l'erreur suivante lors de l'analyse de certaines chaînes (probablement à cause de cette même ligne)...
Encoding::CompatibilityError
incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string)
Je m'occupe de Ruby 1.9.2 et Rails 3.2.1.
2 réponses
votre Regex est "compilé" comme ASCII-8BIT.
il suffit d'ajouter la déclaration d'encodage en haut du fichier où le Regex est déclaré:
# encoding: utf-8
Et vous avez terminé. Maintenant, quand Ruby analysera votre code, il supposera que chaque mot que vous utilisez (Regex, String, etc.) est spécifié dans L'encodage UTF-8.
mise à jour:UTF-8
est maintenant l'encodage par défaut pour Ruby 2.0 et au-delà.