web-dev-qa-db-ja.com

Ruby on Rails 3、互換性のない文字エンコード:i18nでのUTF-8およびASCII-8BIT

カップルRails 3.0.1、Ruby 1.9.2と私のウェブサイトのローカリゼーション。

問題は非常に簡単です、私はビューでそのようなものを持っています:

f.input :Zip_code, :label => I18n.t('labels.Zip_code')

およびes.ymlファイル:

es:
  labels:
    Zip_code: "Este código postal no es valido."

En.ymlファイル(純粋なASCIIファイル)に問題はありませんが、Webサイトがi18n.locale == 'es'私はこのエラーを受け取ります:

incompatible character encodings: UTF-8 and ASCII-8BIT

私はかなり長い間探していましたが、UTF-8翻訳ファイルを使用する方法を見つけませんでした。

動作させる方法を知っている人もいましたか?

ご協力いただきありがとうございます。

34

数時間のグーグルで問題は解決しました...

実際、私のコードには2つのバグがありました。 1つ目はファイルエンコーディングエラーで、2つ目はMySQLデータベース構成の問題です。

まず、MySQLが原因のエラーを解決するために、次の2つの記事を使用しました。

http://www.dotkam.com/2008/09/14/configure-Rails-and-mysql-to-support-utf-8/

http://www.rorra.com.ar/2010/07/30/Rails-3-mysql-and-utf-8/

次に、ファイルエンコーディングの問題を解決するために、config/environment.rbに次の2行を追加しました

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

うまくいけば、これは誰かを助ける:)

47

多くのソリューションを組み合わせることで、ほとんどの問題を解決しました。

  • application.rbに次の行があることを確認してください:config.encoding = "utf-8"
  • 'mysql2' gemを使用していることを確認してください
  • Utf-8文字を含むファイルの先頭に# encoding: utf-8を配置します。
  • <App Name>::Application.initialize!environment.rb行の上に次の2行を追加します。

    Encoding.default_external = Encoding::UTF_8
    Encoding.default_internal = Encoding::UTF_8
    

http://rorguide.blogspot.com/2011/06/incompatible-character-encodings-ascii.html

23
Ritesh Kumar

このアンパック関数を使用すると、最終的にこれを整理するのに役立ちました。変換できないエラーメッセージが表示された場合は、これを試してください。

myString.unpack('U*').pack('U*')
0
flunder

config.encoding = "utf-8"あなたのconfig/application.rb。また、サンプルの翻訳ファイルは、検索しているキーと一致しません(com_nameおよびfirst_name)しかし、私はそれが単なるタイプミスかもしれないと思います。

0
noodl

本当にes.ymlファイルはUTF-8として保存されましたか?

Windowsを使用している場合は、 http://notepad-plus-plus.org/ を使用して確認してください。

0
Fábio Batista