def safe_unicode ( obj ): """Return the unicode/text representation of `obj` without throwing UnicodeDecodeError Returned value is only a *representation*, not necessarily identical. """ if type ( obj ) not in ( six . text_type , six . binary_type ): obj = six . text_type ( obj ) if type ( obj ) is six . text_type : return obj else : return obj . decode ( errors = 'ignore' )