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.

22
demandé sur Shpigford 2012-03-25 06:25:23

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à.

26
répondu Fábio Batista 2013-09-23 04:01:36

Ruby 2.0 Document

/Pattern/u - stand for UTF-8
4
répondu Nil Liu 2015-03-10 11:50:00