Existe-t-il une méthode universelle pour détecter le jeu de caractères de chaîne? J'utilise des balises IPTC et je n'ai aucun codage connu. J'ai besoin de le détecter et de les changer en utf-8.
Quelqu'un peut-il aider?
Vous souhaitez utiliser chardet
, un détecteur d'encodage
C'est un peu tard, mais il y a aussi une autre solution: essayez d'utiliser pyic .
Un exemple:
import icu
def convert_encoding(data, new_coding='UTF-8'):
coding = icu.CharsetDetector(data).detect().getName()
if new_coding.upper() != coding.upper():
data = unicode(data, coding).encode(new_coding)
return data
Si vous voulez le faire avec cchardet, vous pouvez utiliser cette fonction.
import cchardet
def convert_encoding(data, new_coding = 'UTF-8'):
encoding = cchardet.detect(data)['encoding']
if new_coding.upper() != encoding.upper():
data = data.decode(encoding, data).encode(new_coding)
return data