Установите UTF-8 по умолчанию для Ruby 1.9.3

Я на Rails 4 и Ruby 1.9.3

Я часто использую "странные" символы, поэтому мне нужно объявить кодировку UTF-8 в верхней части всех файлов .rb.

Есть ли способ установить UTF-8 в качестве кодировки по умолчанию для Ruby 1.9.3?


Я пробовал все ответы, но при запуске rake db:seed и создании объекта, чьи атрибуты содержат не US-ASCII допустимые символы, я все равно получаю эту ошибку:

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

Ответ 1

Чтобы изменить исходную кодировку (например, в кодировке вашего исходного исходного кода), в настоящий момент вы должны использовать магический комментарий:

# encoding: utf-8

Недостаточно либо задать внутреннюю кодировку (кодировку внутреннего строкового представления после преобразования), либо внешнее кодирование (предполагаемое кодирование файлов чтения). Фактически вам нужно установить комментарий к кодировке магии поверх файлов, чтобы установить исходную кодировку.

В ChiliProject у нас есть задача rake, которая автоматически устанавливает правильный заголовок кодировки во все файлы перед выпуском.

Что касается кодировки по умолчанию:

  • Ruby 1.8 и ниже вообще не знали понятия строковых кодировок. Строки были более или менее байтовыми массивами.
  • Ruby 1.9: кодировка строки по умолчанию US_ASCII.
  • Ruby 2.0 и выше: кодировка по умолчанию - UTF-8.

Таким образом, если вы используете Ruby 2.0, вы можете пропустить комментарий для кодировки и корректно предполагать кодировку UTF-8 всюду по умолчанию.

Ответ 2

в Ruby 1.9 по умолчанию используется ASCII

в Ruby 2.0 по умолчанию используется UTF-8.


изменить версию Ruby

или

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

и в database.yml

development:
     adapter:  your_db
     host:     localhost
     encoding: utf8

Ответ 3

Я думаю, вам нужно одно из следующего, в зависимости от контекста.

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

Этот параметр создается в файле environment.rb.

Ответ 4

В приложении .rb

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

Это не вся история, как указал Хольгер, посмотрите question для дальнейшего объяснения.