Подтвердить что ты не робот

Обнаружить кодировку и преобразовать в utf-8 в Python?

Есть ли какой-либо универсальный метод для определения строковой кодировки? я пользовательские теги IPTC и не имеют известной кодировки. Мне нужно его обнаружить, а затем изменить их на utf-8.

Кто-нибудь может помочь?

4b9b3361

Ответ 1

Вы хотите использовать chardet, детектор кодирования

Ответ 2

Немного поздно, но есть и другое решение: попробуйте использовать pyicu.

Пример:

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

Ответ 3

Если вы хотите сделать это с помощью cchardet, вы можете использовать эту функцию.

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

Ответ 4

Существует еще один модуль под названием cchardet

Говорят, что он быстрее, чем чарт.

Обратите внимание, что для этого требуется Cython