ya2yaml vs. params

时间:2011-06-10 19:36:52

标签: ruby-on-rails ruby encoding

我正在使用Rails 3和ya2yaml,我遇到了一个编码问题,试图将params哈希转换为yaml。 params散列的键存储为 ASCII-8BIT ,值存储为 UTF-8 。这会产生一个问题,因为ya2yaml不喜欢ASCII,如果你尝试使用ya2yaml从ASCII字符串生成yaml,你会得到这个:

--- 
? !binary |
    b25l

: "some_value"

而不是:

--- 
someKey : "some_value"

布莱什。有没有人知道如何在ya2yaml中绕过这个,或强制哈希的键和值使用相同的编码?

1 个答案:

答案 0 :(得分:0)

我最后只编写了一个复制params散列并以UTF-8编码键和值的方法:

  def utf8_hash(some_hash) # convert hash key & 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