diff --git a/FixEncoding.py b/FixEncoding.py index fcf3aee..d2be7e6 100644 --- a/FixEncoding.py +++ b/FixEncoding.py @@ -82,7 +82,8 @@ def is_encoding_issue(filename): 'è', # è mal encodé 'ê', # ê mal encodé 'ë', # ë mal encodé - 'à ', # à mal encodé + 'à ', # à mal encodé (avec espace normal) + 'Ã\xa0', # à mal encodé (avec espace insécable) 'â', # â mal encodé 'ä', # ä mal encodé 'ç', # ç mal encodé @@ -95,10 +96,29 @@ def is_encoding_issue(filename): 'ï', # ï mal encodé 'Å"', # œ mal encodé 'É', # É mal encodé - 'À', # À mal encodé + 'À', # À mal encodé (avec espace normal) + 'Â', #  mal encodé + 'È', # È mal encodé + 'Ê', # Ê mal encodé + 'ÃŽ', # Î mal encodé + 'Ã"', # Ô mal encodé + 'Ù', # Ù mal encodé + 'Û', # Û mal encodé + 'Ç', # Ç mal encodé ] - return any(pattern in filename for pattern in patterns) + if not any(pattern in filename for pattern in patterns): + return False + + # Double vérification : essaye de convertir pour voir si ça produit un résultat valide + try: + fixed = filename.encode('iso-8859-1').decode('utf-8') + # Si la conversion réussit et produit quelque chose de différent, c'est un problème d'encodage + return fixed != filename + except (UnicodeDecodeError, UnicodeEncodeError): + # Si la conversion échoue, ce n'est peut-être pas le bon type de problème + # ou alors c'est un mélange d'encodages + return False def fix_encoding(filename): diff --git a/test_fix_encoding.py b/test_fix_encoding.py index 93aacb0..76f5dbc 100644 --- a/test_fix_encoding.py +++ b/test_fix_encoding.py @@ -16,11 +16,20 @@ import sys def is_encoding_issue(filename): """Détecte si un nom de fichier contient des problèmes d'encodage.""" patterns = [ - 'é', 'è', 'ê', 'ë', 'à ', 'â', 'ä', 'ç', + 'é', 'è', 'ê', 'ë', 'à ', 'Ã\xa0', 'â', 'ä', 'ç', 'ô', 'ö', 'ù', 'û', 'ü', 'î', 'ï', 'Å"', - 'É', 'À' + 'É', 'À', 'Â', 'È', 'Ê', 'ÃŽ', 'Ã"', 'Ù', 'Û', 'Ç' ] - return any(pattern in filename for pattern in patterns) + + if not any(pattern in filename for pattern in patterns): + return False + + # Double vérification : essaye de convertir + try: + fixed = filename.encode('iso-8859-1').decode('utf-8') + return fixed != filename + except (UnicodeDecodeError, UnicodeEncodeError): + return False def fix_encoding(filename):