Python: detecta el conjunto de caracteres y convierte a utf-8

¿Hay algún método universal para detectar charset cadena? Yo utilizo tags IPTC y no tengo encoding conocida. Necesito detectarlo y luego cambiarlos a utf-8.

¿Alguien puede ayudar?

Quieres usar chardet , un detector de encoding.

Es un poco tarde, pero también hay otra solución: intente usar pyicu .

Un ejemplo:

 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 quieres hacerlo con cchardet, puedes usar esta función.

 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 

Hay otro módulo llamado cchardet.

Se dice que es más rápido que el chardet.

Tenga en cuenta que requiere Cython