いくつかの®(登録商標)記号が含まれているテキストファイルがあります。ファイルはUTF-8です。
このファイルをインポートし、Rails 3を使用してMySQLデータベースにデータを入力しようとしています。DBは、UTF-8を使用するように正常にセットアップされているようです。
+-------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
| id | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
| user_id | int(11) | NULL | YES | MUL | NULL | | select,insert,update,references | |
| title | varchar(255) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| translation | text | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| created_at | datetime | NULL | NO | | NULL | | select,insert,update,references | |
| updated_at | datetime | NULL | NO | | NULL | | select,insert,update,references | |
+-------------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
しかし、私がこれを行おうとすると、次のようになります。
trans_file = params[:descriptions] #coming from file_field_tag
trans = trans_file.read.split("\r\n")
trans.each do |tran|
ttl = ''
desc = ''
tran.split(']=').each do |title|
if title =~ /\[/ #it's the title
ttl = title.sub('[','')
else
desc = title.gsub('FFF', "\r\n")
end
end
@current_user.cd_translations.build(title: ttl, translation: desc).save
「アクションコントローラー:互換性のない文字エンコード:ASCII-8BITおよびUTF-8」というエラーが発生します。
application.rbファイルでutf-8エンコーディングを使用しており、mysql2gemを使用しています。
登録商標文字を削除すると、エラーはなくなります。しかし、それは実際には着信テキストからそれを取り除くオプションではありません。
私はここで解決策を試しました:https ://stackoverflow.com/a/5215676/102372 、しかしそれは何の違いもありませんでした。
スタックトレース:
app/controllers/users_controller.rb:28:in `block in update_cd_translations'
app/controllers/users_controller.rb:15:in `each'
app/controllers/users_controller.rb:15:in `update_cd_translations'
config/initializers/quiet_assets.rb:7:in `call_with_quiet_assets'
どうすればこれを解決できますか?