Подтвердить что ты не робот

Недопустимый мультибайт char (US-ASCII) с Rails и Ruby 1.9

Я использую Ruby 1.9.1 с Rails 2.3.4 Мое приложение предназначено для обработки ввода текста

Если я попробую что-то вроде (внутренние кавычки выглядят иначе)

text = """"

Я получаю следующую ошибку:

#<SyntaxError: /Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: syntax error, unexpected $end, expecting keyword_end

Мне нужно указать эти кавычки, поскольку пользователи могут вводить их, и я должен учитывать это?

Любые идеи?

4b9b3361

Ответ 1

Вы пытались добавить волшебный комментарий в script, где вы используете символы, отличные от ASCII? Он должен располагаться поверх script.

#!/bin/env ruby
# encoding: utf-8

Это работало для меня как шарм.

Ответ 2

Если вы хотите легко добавить магические комментарии к всем исходным файлам проекта, вы можете использовать magic_encoding gem

sudo gem install magic_encoding

затем просто вызовите magic_encoding в терминале из корня вашего приложения.

Ответ 3

Я просто хочу добавить свое решение:

Я использую немецкие умлауты, например ö, ü, ä, и получил ту же ошибку.
@Джарек Змудзинский просто рассказал вам, как это работает, но вот мое:

Добавьте этот код в начало своего контроллера: # encoding: UTF-8
(например, использовать флэш-сообщение с умляутами)

пример моего контроллера:

# encoding: UTF-8
class UserController < ApplicationController

Теперь вы можете использовать ö, ä, ü, ß, "" и т.д.

Ответ 4

Эти наклонные двойные кавычки не являются символами ASCII. Сообщение об ошибке вводит в заблуждение относительно того, что они являются "несколькими байтами".

Ответ 5

Просто обратите внимание, что с Ruby 2.0 нет необходимости добавлять # encoding: utf-8. UTF-8 автоматически определяется.

Ответ 6

Это сработало для меня:

$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8