与memcached不兼容的字符编码

时间:2011-04-23 10:03:10

标签: ruby-on-rails ruby utf-8 memcached ruby-1.9.2

我收到一个rails错误,因为它期望UTF-8,memcached将我的字符串转换为ASCII-8BIT。我正在缓存货币数据,包括符号,以防止不必要的数据库命中。

我的方法在这里:

  def self.find_symbol(currency)
    Rails.cache.fetch(currency, :expires_in => 1.week) { Currency.find_by_code(currency).symbol }
  end

正在缓存的部分是UTF-8。

Currency.find_by_code(currency).symbol

然而,当它出来的方法是ASCII-8BIT并且看起来像“\ xE2 \ x82 \ xAC”

我不确定memcache如何处理字符串,如果我应该/可以强制它,所以将字符串保存为UTF,(不知道为什么要转换它)或者当我把它拉出来时强制它回到UTF?

2 个答案:

答案 0 :(得分:2)

我非常确定memcached只是将键值作为直接字节处理,并且不知道字符集。

这表明这是某种铁路问题。

答案 1 :(得分:1)

升级到rails 3.0.7并修复它。

从Dalli 1.0.3和Rails 3.0.7开始,它现在运行良好。