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