Ruby On Rails и UTF-8 - PullRequest
       12

Ruby On Rails и UTF-8

1 голос
/ 04 мая 2010

У меня есть приложение Rails с действием SayController, hello и шаблоном просмотра say/hello.html.erb. Когда я добавляю какой-нибудь кириллический символ, такой как «ю», я получаю сообщение об ошибке:

ArgumentError в SayController # hello

invalid byte sequence in UTF-8

Заголовки:

{"Cache-Control"=>"no-cache",
 "X-Runtime"=>"11",
 "Content-Type"=>"text/html; charset=utf-8"}

Если я попытаюсь написать это письмо со встроенным Ruby,

<%= "ю" %>

Я не получаю никакой ошибки, но вместо этой буквы отображается знак вопроса в черном квадрате ( ).

Я использую Windows 7 x64, Ruby 1.9.1p378, Rails 2.3.5, сервер WEBrick.

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Вероятной причиной этой ошибки является то, что файл, содержащий буквы кириллицы, не кодируется в UTF8, но, возможно, в какой-то русской кодировке, такой как KOI8. Это приведет к невозможности интерпретации символов в UTF8 (и это правильно!).

Так что дважды проверьте, что ваш файл правильно закодирован в UTF8.

1 голос
/ 04 мая 2010

Создайте файл инициализатора (например, encoding_fix.rb) в your_app / config / initializer со следующим содержимым:

Encoding.default_internal = Encoding::UTF_8 if RUBY_VERSION > "1.9"
Encoding.default_external = Encoding::UTF_8 if RUBY_VERSION > "1.9"

Устанавливает кодировку utf8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...