2012-03-18 14 views
8

tengo la siguiente línea de código en mi Ruby on Rails aplicación, que comprueba si la cadena dada contiene caracteres coreanos o no:RoR expresiones regulares clase de caracteres

isKorean = !/\p{Hangul}/.match(word).nil? 

Funciona perfectamente en la consola, pero plantea una error de sintaxis para la aplicación real:

invalid character property name {Hangul}: /\p{Hangul}/ 

¿Qué me estoy perdiendo y cómo puedo hacer que funcione?

+0

¿Cuál es el resultado de '" # {RUBY_VERSION} -p # {RUBY_PATCHLEVEL} "' en la consola y en la aplicación? –

Respuesta

13

Este es un tema de codificación de caracteres, es necesario agregar:.

# encoding: utf-8 

a la parte superior de la Rubí archivo que está utilizando expresiones regulares que en Usted probablemente puede utilizar cualquier codificación que la clase de caracteres que' re usa existe en lugar de UTF-8 si lo desea. Tenga en cuenta que en Ruby 2.0, UTF-8 ahora es el predeterminado, por lo que no es necesario en Ruby 2.0+.

Esto se conoce como "comentario mágico". Puede y debe leer más sobre encoding in Ruby 1.9. Tenga en cuenta que la codificación en vistas Rails es manejado automáticamente por config.encoding (a UTF-8 por defecto en config/application.rb.

Es probable que trabajaba en la consola debido a su terminal está configurado para utilizar UTF-8 ya.

+1

Perfecto, gracias. Habiendo configurado la codificación predeterminada para UTF-8 en 'application.rb', esperaba para funcionar en toda la aplicación. Resulta que estaba equivocado. – Arnold

+2

@ArnoldSakhnov Sí, esa configuración solo se aplica a las vistas (presumiblemente porque Rails puede establecer la codificación cuando representa la vista, pero Ruby es el único que carga los archivos de la clase, etc.) . –

Cuestiones relacionadas