繁体   English   中英

Ruby 2.2:PG :: CharacterNotInRepertoire:错误:用于编码“UTF8”的无效字节序列

[英]Ruby 2.2: PG::CharacterNotInRepertoire: ERROR: invalid byte sequence for encoding “UTF8”

我正在升级Rails 4.1应用程序以使用Ruby 2.2。 在升级期间,结果发现该应用程序使用旧版本的pg gem(0.12)并且gem未使用Ruby 2.2进行安装。 所以我尝试使用更新版本的pg gem(0.17.1)。 现在,有时在系统中创建新用户时会出现以下错误:

PG :: CharacterNotInRepertoire:ERROR:编码“UTF8”的无效字节序列

Ruby 2.2和Postgres有任何已知问题吗?

看起来应用程序配置为使用unicode: config.encoding = "utf-8"在application.rb中设置并且encoding: unicode在database.yml中

SQL语句:

INSERT INTO "users" (
  "confirmation_sent_at", 
  "confirmation_token", 
  "created_at", 
  "email", 
  "encrypted_password", 
  "first_name", 
  "last_name", 
  "updated_at") 
  VALUES ($1, $2, $3, $4, $5, $6, $7, $8) 
  RETURNING "id"

在使用Postgres的Ruby 2.2.0重新UTF-8编码中肯定存在某种错误。 我将以前没有错误的Rails 4.1.5应用程序从Ruby 2.1.5升级到Ruby 2.2.0并开始在开发和用户输入电子邮件字段中获取这些错误“PG :: CharacterNotInRepertoire:ERROR:用于编码UTF8的无效字节序列”在Heroku的临时环境中。 降级到Ruby 2.1.5而没有其他更改完全解决了这个问题。

更新:

打败这个更新,但错误不在于Ruby,而是pg gem: https//github.com/ged/ruby-pg/pull/5

看起来这是“pg”gem的一个已知问题: https//bitbucket.org/ged/ruby-pg/issue/197/ruby-220-byte-encoding-issue

它应该在0.18预发布中修复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM