#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