2011-04-23 8 views
1

UTF-8이 예상되므로 레일스 오류가 발생합니다. memcached가 내 문자열을 ASCII-8BIT로 변환하고 있습니다. DB에 불필요한 히트를 방지하기 위해 심볼을 포함한 통화 데이터를 캐싱하고 있습니다. 여기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에 내가/강제하는 경우는 memcache에이 문자열을 처리하는 방법을 내가 확실 해요

"\ XE2 \ X82 XAC \"처럼 보인다 그래서 UTF로 문자열을 저장합니다 (왜 변환합니까?) 또는 꺼내면 다시 UTF로 강제 적용합니까?

+0

머리 부분에 utf 유형을 설정 했습니까? – apneadiving

+0

머리 부분 어디? 나는 당신이 HTML/doctype의 머리에 대해 말하지 않고 있다고 가정하고 있습니다. 이것은 ruby ​​1.9 오류입니다. 1.8.7에서 잘 작동했습니다. – holden

+0

나는 HTML 부분에 대해 이야기합니다 : 나는 캐시 페이지에 문제를 인코딩하고 머리에 utf를 추가하여 해결했습니다. – apneadiving

답변

1

레일 3.0.7로 업그레이드되고 수정되었습니다.

Dalli 1.0.3 및 Rails 3.0.7부터는 이제 정상적으로 작동합니다.

2

memcached는 키 값을 스트레이트 바이트로 처리하고 문자 집합을 인식하지 못합니다.

이것은 어떤 종류의 레일 문제라고 제안합니다.

관련 문제