Establecer UTF-8 como predeterminado para Ruby 1.9.3

Estoy en Rails 4 y Ruby 1.9.3

Uso caracteres “extraños” muy a menudo, así que tengo que declarar la encoding UTF-8 en la parte superior de todos los archivos .rb.

¿Hay alguna manera de establecer UTF-8 como la encoding predeterminada para Ruby 1.9.3?


Intenté todas las respuestas, pero al ejecutar rake db:seed y al crear un objeto cuyos atributos no contienen US-ASCII válidos de US-ASCII , Todavía recibo este error:

 `block in trace_on': invalid byte sequence in US-ASCII (ArgumentError) 

Para cambiar la encoding de la fuente (es decir, la encoding en la que se encuentra su código fuente escrito real), tiene que usar el comentario mágico actualmente:

 # encoding: utf-8 

No es suficiente establecer la encoding interna (la encoding de la representación de la cadena interna después de la conversión) o la encoding externa (la encoding supuesta de los archivos leídos). En realidad, debe establecer el comentario de encoding mágica sobre los archivos para configurar la encoding de origen.

En ChiliProject tenemos una tarea de rake que establece el encabezado de encoding correcto en todos los archivos automáticamente antes de un lanzamiento.

En cuanto a la encoding de valores por defecto:

  • Ruby 1.8 y anteriores no conocían el concepto de encoding de cuerdas. Las cadenas eran más o menos matrices de bytes.
  • Ruby 1.9: la encoding de cadena predeterminada es US_ASCII todas partes.
  • Ruby 2.0 y superior: la encoding de cadena predeterminada es UTF-8 .

Por lo tanto, si usa Ruby 2.0, podría omitir el comentario de encoding y asumir correctamente la encoding UTF-8 en todas partes de forma predeterminada.

en Ruby 1.9 el valor predeterminado es ASCII

en Ruby 2.0 el valor predeterminado es UTF-8.

cambiar la versión de ruby

o

 config.encoding = "utf-8" # application.rb 

y en tu database.yml

 development: adapter: your_db host: localhost encoding: utf8 

Creo que querrías uno de los siguientes, dependiendo del contexto.

 Encoding.default_internal = Encoding::UTF_8 Encoding.default_external = Encoding::UTF_8 

Esta configuración se realiza en el archivo environment.rb.

En su aplicacion.rb

 # Configure the default encoding used in templates for Ruby config.encoding = "utf-8" 

Esta no es toda la historia como lo señaló Holger, verifique esta pregunta para una explicación más detallada.