Rails 4 and Ruby 1.9.3
私は「奇妙な」文字を頻繁に使用するため、すべての.rbファイルの先頭でUTF-8エンコードを宣言する必要があります。
Ruby 1.9.3のデフォルトのエンコーディングとしてUTF-8を設定する方法はありますか?
すべての回答を試しましたが、rake db:seed
を実行し、属性にUS-ASCII
以外の有効な文字が含まれるオブジェクトを作成しても、次のエラーが発生します。
`block in trace_on': invalid byte sequence in US-ASCII (ArgumentError)
ソースエンコーディング(つまり、実際に記述されたソースコードが含まれているエンコーディング)を変更するには、現在マジックコメントを使用する必要があります。
# encoding: utf-8
内部エンコーディング(変換後の内部文字列表現のエンコーディング)または外部エンコーディング(読み取りファイルの想定エンコーディング)を設定するだけでは不十分です。実際には、ソースエンコーディングを設定するために、ファイルの先頭にマジックエンコーディングコメントを設定する必要があります。
ChiliProject には rake task があり、リリース前にすべてのファイルに正しいエンコーディングヘッダーを自動的に設定します。
エンコードのデフォルトについて:
US_ASCII
どこにでも。UTF-8
。したがって、Ruby 2.0を使用する場合は、エンコーディングコメントをスキップして、デフォルトであらゆる場所でUTF-8エンコーディングを正しく想定できます。
状況に応じて、次のいずれかが必要になると思います。
Encoding.default_internal = Encoding::UTF_8
Encoding.default_external = Encoding::UTF_8
この設定は、environment.rbファイルで行われます。
Ruby 1.9では、デフォルトはASCIIです。
Ruby 2.0では、デフォルトはUTF-8です。
変更Rubyバージョン
または
config.encoding = "utf-8" # application.rb
そしてあなたのdatabase.yml
development:
adapter: your_db
Host: localhost
encoding: utf8
あなたのapplication.rb
# Configure the default encoding used in templates for Ruby
config.encoding = "utf-8"
これはHolgerによって指摘されたすべての話ではありません。詳細については、これをチェックしてください question 。