【问题标题】:Ruby exception: `incompatible character encodings: ASCII-8BIT and UTF-8`Ruby 异常:`不兼容的字符编码:ASCII-8BIT 和 UTF-8`
【发布时间】:2014-12-11 10:09:00
【问题描述】:

重要信息在底线!

Rails 应用程序在序列化 Protocol Buffers 消息时遇到异常:

Exception(Encoding::CompatibilityError):不兼容的字符编码:ASCII-8BIT 和 UTF-8

==== Stack trace: ====
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/encoder.rb:64:in `write'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/encoder.rb:64:in `serialize_field_value'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/encoder.rb:51:in `serialize_field'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/encoder.rb:38:in `block in encode'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/encoder.rb:15:in `each'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/encoder.rb:15:in `encode'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/message.rb:248:in `serialize'
/usr/local/rvm/gems/ruby-2.0.0-p576/gems/ruby-protocol-buffers-1.5.1/lib/protocol_buffers/runtime/message.rb:255:in `serialize_to_string'
/var/www/html/disp/lib/navs/navs.rb:955:in `compose_message'

第 955 行是:

[type].pack('N*') + msg.serialize_to_string

其中type 是整数,msgProtocolBuffers::Message 的后代。

重要信息

我只在任何 Web 服务器(Apache+Passenger、WEBrick、Puma)中的一台 CentOS 机器上遇到此异常。在 Windows 和其他 CentOS 机器上一切都很好。代码是一样的,每次测试前都会重新创建数据库并播种。

【问题讨论】:

    标签: ruby-on-rails utf-8 character-encoding ascii protocol-buffers


    【解决方案1】:

    通过将 Ruby 从 2.0.0-p576 降级到 2.0.0-p481 解决

    更新

    p481 不再可供下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 2011-07-14
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2011-10-17
      • 2011-03-12
      • 2011-05-26
      相关资源
      最近更新 更多