1

我收到一个 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?

4

2 回答 2

2

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

这表明这是某种轨道问题。

于 2011-04-23T10:11:01.590 回答
1

升级到 rails 3.0.7 并修复了它。

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

于 2011-04-23T11:27:07.863 回答