J'ai environ 1000 noms de fichiers lus par os.listdir()
, certains d'entre eux sont encodés en UTF8 et certains sont CP1252.
Je veux tous les décoder en Unicode pour un traitement ultérieur dans mon script. Existe-t-il un moyen d'obtenir le codage source pour décoder correctement en Unicode?
Exemple:
for item in os.listdir(rootPath):
#Convert to Unicode
if isinstance(item, str):
item = item.decode('cp1252') # or item = item.decode('utf-8')
print item
si vos fichiers dans cp1252
et utf-8
, alors il existe un moyen simple.
import logging
def force_decode(string, codecs=['utf8', 'cp1252']):
for i in codecs:
try:
return string.decode(i)
except UnicodeDecodeError:
pass
logging.warn("cannot decode url %s" % ([string]))
for item in os.listdir(rootPath):
#Convert to Unicode
if isinstance(item, str):
item = force_decode(item)
print item
sinon, il y a un lib charset detect.
Python - détecter le jeu de caractères et convertir en utf-8
Utilisez la bibliothèque chardet. C'est super facile
import chardet
the_encoding = chardet.detect('your string')['encoding']
et c'est tout!