当某些字符串被保存到数据库时,我得到了以下ActiveRecord错误。
ActiveRecord::StatementInvalid: PG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0xfc
我想这是发生在这个字符串上的。
我试着在ruby文件的顶部添加
Mühldorf
来解决这个问题,但似乎什么也没做。我正在使用Ruby Geocoder提取位置数据,这就是字符串的来源。
我在Heroku的Postgres数据库上运行Ruby1.9.3。
最佳答案
小写的U-umlaut在ISO 8859-1中是0xfc(也称为拉丁语-1),但0xfc不是有效的UTF-8字符问题是你有一个拉丁-1字符串,你想把它当作UTF-8,而PostgreSQL正是在抱怨。
要么修复数据源以向您发送UTF-8,要么,如果它总是向您发送拉丁语-1,请使用以下内容自行修复编码:
utf_8_string = latin_1_string.force_encoding('iso8859-1').encode('utf-8')
然后使用
utf_8_string
版本。