web-dev-qa-db-ja.com

RailsおよびRuby 1.9を含む無効なマルチバイト文字(US-ASCII)

私は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

ユーザーが入力する可能性があるため、これらの引用符を使用する必要があり、それを考慮する必要がありますか?

何か案は?

197
Tam

非ASCII文字を使用するスクリプトに魔法のコメントを追加しようとしましたか?スクリプトの上に配置する必要があります。

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

それは私にとって魅力的でした。

690

プロジェクトのすべてのソースファイルに簡単にマジックコメントを追加したい場合は、 magic_encoding gemを使用できます

Sudo gem install magic_encoding

次に、ターミナルでアプリのルートからmagic_encodingを呼び出すだけです。

43
Shamu

私は自分のソリューションを追加したいだけです:

ö、ü、äなどのドイツ語のウムラウトを使用していますが、同じエラーが発生しました。
@ Jarek Zmudzinskiがその仕組みを説明したところですが、これが私のものです。

このコードをコントローラーの上部に追加します:# encoding: UTF-8
(たとえば、ウムラウトでフラッシュメッセージを使用する場合)

私のコントローラーの例:

# encoding: UTF-8
class UserController < ApplicationController

これで、ö、ä、ü、ß、 ""などを使用できます。

16
Ismoh

Ruby 2.0の時点で# encoding: utf-8を追加する必要がないことに注意してください。 UTF-8は自動的に検出されます。

8
Nowaker

これらの二重引用符は、ASCII文字ではありません。エラーメッセージは、それらが「マルチバイト」であることについて誤解を招きます。

7
Phil Miller

それは私のために働いた:

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