+whitespace_re = re.compile('\s+')
+def normalise_space(str):
+ return whitespace_re.sub(' ', str).strip()
+
+def clean_header(header):
+ """ Decode (possibly non-ascii) headers """
+
+ def decode(fragment):
+ (frag_str, frag_encoding) = fragment
+ if frag_encoding:
+ return frag_str.decode(frag_encoding)
+ return frag_str.decode()
+
+ fragments = map(decode, decode_header(header))
+
+ return normalise_space(u' '.join(fragments))
+