Tengo un problema con una de mis expresiones regulares de validación cuando utilizo caracteres utf-8 no estándar. Entonces, realizo algunos experimentos y parece que el rubí regex se comporta diferente cuando hay un entorno de rieles o en rubí simple.Comportamiento extraño de ruby regex en rieles con utf8 char
Publico aquí mi expriment con una cadena china.
En Ruby "puro":
string = "運動會"
puts string[/\A[\w]*\z/]
=> match "運動會" - ok
En rieles:
# coding: utf-8
task :test => :environment do
string = "運動會"
puts string[/\A[\w]*\z/]
end
$ rake test
=> nothing - not ok
Si omito # coding: utf-8
, viene con invalid multibyte char (US-ASCII)
. De todos modos, incluso con esto, no coincide.
Por supuesto, he comprobado todo (ruby_version, la codificación de archivos de comandos en UTF-8 ..)
que utilizo:
- Rails 3.0.7
- de Ruby 1.9.2 (ruby-1.9.2-p180)
Así que mi conclusión es que los rieles alteran la forma en que se comportan las expresiones regulares y no encontré la manera de hacerlo funcionar en rubíes normales.
no puede realmente ayudar con ROR 1, pero para una buena pregunta - es obvio que ha intentado y ha hecho su tarea. – Kobi
Gracias, sí. Sigo buscando excelentes artículos sobre utf-8 y ruby 1.8/1.9 pero nada relacionado con este problema. – Hartator
FWIW - su prueba funciona en 1.8.7 - no estoy seguro si esa es una opción para usted. – smathy