当某些字符串被保存到数据库时,我得到了以下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版本。

10-08 04:42