2011-04-23 73 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只是將鍵值作爲直接字節處理,並且不知道字符集。

這將表明這是某種導軌問題。

相關問題