2011-04-23 75 views
1

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

我的方法在这里:

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 \西飞”

我不能确定的memcache如何处理字符串,我是否应该/可以强制它将字符串保存为UTF,(不知道为什么会将其转换),或者当我将其拉出时将其强制还原为UTF?

+0

您是否在头部设置了utf类型? – apneadiving 2011-04-23 10:04:04

+0

头部哪里?我假设你不是在讨论HTML /文档类型的头部。这是一个红宝石1.9错误,在1.8.7中工作正常 – holden 2011-04-23 10:06:23

+0

我的确谈到了html部分:我对缓存页面进行了编码问题,并在头部添加了utf解决了它。 – apneadiving 2011-04-23 10:07:37

回答

1

升级到导轨3.0.7,并修复它。

由于Dalli 1.0.3和Rails 3.0.7现在工作正常。

2

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

这将表明这是某种导轨问题。

相关问题