PG ::错误:错误:编码“UTF8”的无效字节序列:0xfc

当某些字符串保存到数据库时,我收到以下ActiveRecord错误。

ActiveRecord::StatementInvalid: PG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0xfc 

觉得这个字符串是Mühldorf

我已经尝试将# encoding: utf-8到我的ruby文件的顶部来解决这个问题,但似乎没有做任何事情。

我正在使用Ruby Geocoder提取位置数据,这就是字符串的来源。

我在Heroku上的Postgres数据库上运行Ruby 1.9.3。

小写U-umlaut在ISO 8859-1 (AKA Latin-1)中是0xfc,但0xfc不是有效的UTF-8字符。 问题是你有一个Latin-1字符串,你试图将其视为UTF-8,而PostgreSQL正在抱怨。

修复数据源以向您发送UTF-8,或者,如果它始终向您发送Latin-1,请使用以下内容自行修复编码:

 utf_8_string = latin_1_string.force_encoding('iso8859-1').encode('utf-8') 

然后使用utf_8_string版本。