2011-06-10 8 views
0

레일 3 및 ya2yaml과 함께 작업 중이며 params 해시를 yaml로 변환하려고 인코딩 문제가 있습니다. params 해시 키는 ASCII-8BIT으로 저장되며 값은 UTF-8으로 저장됩니다. ya2yaml는 ASCII를 좋아하지 않기 때문에 이것은 문제를 만들고 당신이 ya2yaml를 사용하여 ASCII 문자열에서 YAML을 생성하려고하면, 당신이 얻을 : 이것 대신ya2yaml 대 params

--- 
? !binary | 
    b25l 

: "some_value" 

을 :

--- 
someKey : "some_value" 

BLECH . 누구든지 ya2yaml에서 이것을 무시하거나 해시 키와 값이 같은 인코딩을 사용하도록하는 방법을 알고 있습니까?

답변

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