Ruby on rails -与memcached不兼容的字符编码



我得到一个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,看起来像"xE2x82xAC"

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

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

这表明这是某种rails问题

升级到rails 3.0.7并修复了它。

从dali 1.0.3和Rails 3.0.7开始,它现在可以正常工作了。

最新更新