недопустимый многобайтовый символ (US-ASCII) с Rails и Ruby 1.9 - PullRequest
197 голосов
/ 16 ноября 2009

Я использую 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

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

Есть идеи?

Ответы [ 6 ]

690 голосов
/ 21 января 2010

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

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

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

43 голосов
/ 03 августа 2010

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

sudo gem install magic_encoding

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

16 голосов
/ 10 апреля 2014

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

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

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

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

# encoding: UTF-8
class UserController < ApplicationController

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

8 голосов
/ 07 января 2014

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

7 голосов
/ 16 ноября 2009

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

5 голосов
/ 17 марта 2014

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

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