La declaración de mayúsculas y minúsculas de Ruby 1.8 y UTF-8 compara

votos
1

Tengo una tarea de Rake (en el directorio lib / tasks) que ejecuto con cron en mi alojamiento web compartido. El problema es que quiero comparar una cadena UTF-8 utilizando una sentencia de caso, pero mi código fuente no está codificado en UTF-8. Si guardo el código fuente como UTF-8, hay un error cuando trato de iniciarlo :(

¿Lo que tengo que hacer?

¿Se pueden leer estas cadenas desde un archivo txt UTF-8 externo?

PD: estoy usando Ruby 1.8

PD, quiero decir comparar de esta manera:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Publicado el 09/12/2008 a las 17:16
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
2

Descubrí que mi problema no estaba en el caso

El problema fue que cuando guardo mi código fuente en formato UTF-8, mi editor de texto agrega 3 bytes (BOM) al comienzo para indicar que la codificación es UTF-8.

P: ¿Qué es una lista de materiales?

R: Una marca de orden de bytes (BOM) consiste en el código de carácter U + FEFF al comienzo de un flujo de datos, donde se puede usar como una firma que define el orden de bytes y el formulario de codificación, principalmente de los archivos de texto sin etiquetar. En algunos protocolos de nivel superior, el uso de una BOM puede ser obligatorio (o prohibido) en la secuencia de datos Unicode definida en ese protocolo.

UTF-8, UTF-16, UTF-32 y BOM

El error que obtuve fue:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
Respondida el 10/12/2008 a las 09:34
fuente por usuario

votos
1

Diría que necesitas cambiar tu editor de texto ya que la BOM no es necesaria para UTF-8. UTF-8 no depende del orden de bytes. Ver el texto del enlace para más detalles.

Respondida el 11/12/2008 a las 10:57
fuente por usuario

votos
0

Intente utilizar el mb_charsmétodo del marco ActiveSupport de Rails :

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Respondida el 09/12/2008 a las 22:18
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more