несовместимые кодировки символов с memcached - PullRequest
1 голос
/ 23 апреля 2011

Я получаю ошибку 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, когда я вытащу ее?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2011

Я уверен, что memcached просто обрабатывает значения ключей как прямые байты и не знает о наборах символов.

Это предполагает, что это какая-то проблема с рельсами.

1 голос
/ 23 апреля 2011

Обновлен до рельсов 3.0.7 и это исправлено.

Начиная с Dalli 1.0.3 и Rails 3.0.7 теперь он работает нормально.

...