我有一个文本文件,其中包含一些®(注册商标)符号。该文件采用 UTF-8 格式。
我正在尝试导入此文件并使用 Rails 3 填充 MySQL 数据库。数据库似乎设置得很好,可以采用 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 编码,并且使用 mysql2 gem。
如果我删除注册商标字符,错误就会消失。但是,将其从传入的文本中剥离并不是一个真正的选择。
我在这里尝试了解决方案: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'
我该如何解决这个问题?