def Encodings.encode_non_usascii(address, charset)
return address if address.ascii_only? or charset.nil?
us_ascii = %Q{\x00-\x7f}
address = address.gsub(/(".*?[^#{us_ascii}].*?")/) { |s| Encodings.b_value_encode(unquote(s), charset) }
tokens = address.split(/\s/)
map_with_index(tokens) do |word, i|
if word.ascii_only?
word
else
previous_non_ascii = i>0 && tokens[i-1] && !tokens[i-1].ascii_only?
if previous_non_ascii
word = " #{word}"
end
Encodings.b_value_encode(word, charset)
end
end.join(' ')
end