diff --git a/cranslib/cransstrings.py b/cranslib/cransstrings.py new file mode 100644 index 00000000..1988720f --- /dev/null +++ b/cranslib/cransstrings.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +def decode_dammit(s): + """Renvoie un unicode. Que ``s`` soit un unicode, un str en UTF-8 ou un str en ISO-8859-1. + Dans les autres cas, plante en affichant la chaîne incriminée.""" + if not isinstance(s, basestring): + raise ValueError("Appeler avec str ou unicode.") + if isinstance(s, unicode): + return s + else: + try: + return s.decode("utf-8") + except UnicodeDecodeError as error: + try: + return s.decode("iso-8859-1") + except UnicodeDecodeError as error2: + raise UnicodeDecodeError("%s: %r" % (error2, v))