Pour avoir un unicode dans plein de cas.

This commit is contained in:
Vincent Le Gallic 2014-05-16 01:37:01 +02:00
parent b5a93a9cf0
commit 56dc6e668c

18
cranslib/cransstrings.py Normal file
View file

@ -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))