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

时间:2013-09-30 20:01:30

标签: ruby-on-rails ruby postgresql heroku encoding

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

1 个答案:

答案 0 :(得分:11)

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

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

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

然后使用utf_8_string版本。