5: def convert_to_utf8_encoded_object(object)
6: case object
7: when Array
8: object.collect {|element| convert_to_utf8_encoded_object(element)}
9: when Hash
10: encoded = {}
11: object.each do |key, value|
12: key = convert_to_utf8_encoded_object(key)
13: value = convert_to_utf8_encoded_object(value)
14: encoded[key] = value
15: end
16: encoded
17: when String
18: encoded = object.dup
19: encoded.force_encoding("utf-8")
20: encoded = object unless encoded.valid_encoding?
21: encoded
22: else
23: object
24: end
25: end