From 276a0ad791a5d6ac4e0fe133321186c01bab8c2c Mon Sep 17 00:00:00 2001 From: Nicolas Dandrimont Date: Mon, 20 Apr 2009 06:46:40 +0200 Subject: [PATCH] [darcs_send_changes] ISO-8859-15 safety darcs-hash:20090420044640-ffbb2-bc068c43f58d48a124b8ac08aaa6c4cdd9a7c5ab.gz --- gestion/darcs_send_changes.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) 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. """