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

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

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

4 ответа

Решение

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

Уже немного поздно, но есть и другое решение: попробуйте использовать 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

Если вы хотите сделать это с помощью 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

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

Говорят, что это быстрее, чем Чарде.

Обратите внимание, что это требует Cython

Другие вопросы по тегам