TODO: Validate that the characters are UTF-8. If they aren’t, you’ll
get a weird error down the road, but our form handling should really
prevent that from happening
# File actionpack/lib/action_dispatch/http/parameters.rb, line 59
def normalize_encode_params(params)
if params.is_a?(String)
return params.force_encoding(Encoding::UTF_8).encode!
elsif !params.is_a?(Hash)
return params
end
new_hash = {}
params.each do |k, v|
new_key = k.is_a?(String) ? k.dup.force_encoding(Encoding::UTF_8).encode! : k
new_hash[new_key] =
case v
when Hash
normalize_encode_params(v)
when Array
v.map! {|el| normalize_encode_params(el) }
else
normalize_encode_params(v)
end
end
new_hash.with_indifferent_access
end