From 56dc6e668c562b7a9a3577c606fabb477fa8a4d9 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Fri, 16 May 2014 01:37:01 +0200 Subject: [PATCH] Pour avoir un unicode dans plein de cas. --- cranslib/cransstrings.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 cranslib/cransstrings.py 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))