ya2yaml против параметров

#ruby-on-rails #ruby #encoding

#ruby-on-rails #ruby #кодирование

Вопрос:

Я работаю с Rails 3 и ya2yaml, и у меня возникла проблема с кодировкой при попытке преобразовать хэш параметров в yaml. Ключи для хэша параметров хранятся в формате ASCII-8BIT, а значения хранятся в формате UTF-8. Это создает проблему, поскольку ya2yaml не любит ASCII, и если вы попытаетесь сгенерировать yaml из строки ASCII с помощью ya2yaml, вы получите это:

 --- 
? !binary |
    b25l

: "some_value"
  

Вместо этого:

 --- 
someKey : "some_value"
  

Вздор. Кто-нибудь знает, как обойти это в ya2yaml или заставить ключи и значения хэша использовать ту же кодировку?

Ответ №1:

В итоге я просто написал метод, который дублировал хэш параметров и кодировал ключи и значения в UTF-8:

   def utf8_hash(some_hash) # convert hash key amp; values to utf-8 for proper translation
    new_hash = Hash.new
    some_hash.each do |key, value|
      new_hash[key.to_s.encode(Encoding::UTF_8)] = value.to_s.encode(Encoding::UTF_8)
    end    
    new_hash
  end

  utf8_hash(params).ya2yaml