Ruby on Rails — кодировка сгенерированных файлов

Я обнаружил, что все файлы, которые RoR генерирует при создании нового приложения, по-видимому, сохраняются в кодировке Western (ISO-8859-1) (я разрабатываю локально на компьютере с Windows). В результате у меня возникают проблемы при использовании некоторых специальных символов, например £.

  • Должен ли RoR создавать файлы фреймворка и сохранять их в кодировке Western (ISO-8859-1)?
  • Если нет, то как я могу заставить RoR генерировать файлы и сохранять их в кодировке UTF-8, чтобы избежать проблем с некоторыми символами, например £?

Пожалуйста, см. Ruby on Rails - проблемы со знаком £ для предыдущего нерешенного вопроса, который я задал относительно Эта проблема.


person freshest    schedule 11.11.2010    source источник


Ответы (1)


Rails использует только символы ASCII в сгенерированных файлах.

Файлы ASCII не являются ни UTF-8, ни ISO-8859-1. ASCII совместим с обеими кодировками, но файл ASCII не становится файлом ISO-8859-1 или UTF-8, пока вы не добавите в него специальный символ.

Когда вы сохраняете файл после добавления символа £, убедитесь, что ваш редактор или IDE настроены на использование UTF-8 вместо ISO-8859-1. Вам следует найти параметр конфигурации в вашем редакторе. Рельсы ничего не могут с этим поделать.

Если вы запускаете Ruby 1.9, также не забудьте установить магический комментарий вверху файла, содержащего специальные символы (кроме шаблонов). В Ruby 1.8 и предыдущих версиях этот комментарий не действует.

# encoding: utf-8

Точно такая же проблема вызывает симптомы, которые вы описываете в другом вопросе.

Дополнительную информацию см. в этой (старой, но отличной) статье о кодировках символов и Unicode.

person molf    schedule 11.11.2010
comment
Но почему файлы структуры RoR создаются и сохраняются в кодировке ISO-8859-1? Я думал, что кодировка по умолчанию в RoR - UTF-8. - person freshest; 11.11.2010
comment
@freshest, RoR не сохраняет файлы как ISO-8859-1, а сохраняет их как ASCII. ASCII совместим как с UTF-8, так и с ISO-8859-1. Если вы добавляете специальный символ в файл ASCII, это момент, когда вы должны указать правильную кодировку. Rails не добавляет специальные символы в создаваемые файлы. Следовательно, проблемы вызывает конфигурация вашего редактора, а не Rails. - person molf; 11.11.2010
comment
Кроме того, кодировка, с которой сохраняются файлы, отличается от кодировки, с которой отправляется сгенерированный HTML. Убедитесь, что это тоже правильно - person Gareth; 11.11.2010