7

Ruby1.9とRails2.3.4で次のエラーが発生します。これは、ユーザーが非ASCII標準文字を送信したときに発生します。

私はたくさんのオンラインリソースを読みましたが、うまくいった解決策を持っている人はいないようです。

私は(いくつかのリソースが示唆しているように)使ってみました

string.force_encoding('utf-8') 

しかし、それは役に立ちませんでした。

これを解決する方法はありますか?DBに保存する前にそのような文字を削除する方法はありますか?または、それらを表示させる方法はありますか?

4

2 に答える 2

11

ruby1.9およびRails3.0.xの場合は、mysql2アダプターを使用します。

あなたのgemfileで:

gem 'mysql2', '~> 0.2.7'

database.ymlを次のように更新します。

adapter: mysql2

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

于 2011-06-02T04:15:27.660 に答える
1

Ruby(またはRails)についてはよくわかりませんが、問題の原因は文字エンコードの制御の欠如にあると思います。

まず、データベースに保存するエンコーディングを決定する必要があります。次に、データベースに保存する前に、すべてのテキストをそのエンコーディングに変換する必要があります。そのためには、まず、どのエンコーディングから始めるかを知る必要があります。

よく繰り返されるアドバイスの1つは、使用するエンコーディングからのすべての入力をデコードして、制御を取得した後できるだけ早くユニコード(言語でサポートされている場合)にすることです。次に、プログラムで処理するすべてのテキストがユニコードであることがわかります。もう一方の端では、テキストを出力する前の最後のステップとして、必要な出力エンコードにテキストをエンコードします。

重要なのは、コード内の任意の場所でテキストの一部がどのエンコーディングを使用しているかを常に知ることです。

于 2009-11-22T20:02:52.893 に答える