diff --git a/gestion/darcs_send_changes.py b/gestion/darcs_send_changes.py index 3689a965..e7264f34 100644 --- a/gestion/darcs_send_changes.py +++ b/gestion/darcs_send_changes.py @@ -51,21 +51,24 @@ CONF_PATH = "_darcs/third-party/darcs-send-changes" DATE_FILE = CONF_PATH + "/date-last-send" ID_FILE = CONF_PATH + "/id" -def to_utf8(str): +def to_utf8(input): """ Decode un str ou un unicode vers un str en UTF-8. """ - if isinstance(str, unicode): - return str.encode("UTF-8") + if not isinstance(input, basestring): + return input + + if isinstance(input, unicode): + return input.encode("UTF-8") else: try: # Si c'est une chaine brute, on commend par essayer # de la décoder comme une chaine en UTF-8 - str.decode("UTF-8") - return str - except: + input.decode("UTF-8") + return input + except UnicodeDecodeError: try: - return str.decode(encoding).encode("UTF-8") - except: - return str + return input.decode("ISO-8859-15").encode("UTF-8") + except (UnicodeDecodeError, UnicodeEncodeError): + return input.decode("ascii", "replace").encode("UTF-8") def darcs(args): """ Invoque darcs et renvoie sa sortie. """