Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Как определить кодировку последовательности байтов в Python

30 октября 2017 г. Archy Просмотров: 31455 RSS 5
Python для начинающих , , , ,
Как определить кодировку последовательности байтов в Python

Как узнать, в какой кодировке записана последовательность байтов? Коротки ответ: никак. Кто-то должен вам сообщить.

В некоторых коммуникационных протоколах и файловых форматах, например HTTP и XML, предусмотрены заголовки, в которых явно указывается, как закодировано содержимое.

Можно быть уверенным, что поток байтов представлен не в кодировке ASCII, если он содержит значения, больше 127, а сам способ построения UTF-8 и UTF-16 исключает определенные последовательности байтов.

Но и с учетом всего этого никогда нет стопроцентной уверенности в том, что некий двоичный файл записан в кодировке ASCII или UTF-8 просто потому, что в нем не встречаются определенные комбинации битов.

Если вы являетесь веб-разработчиком и часто имеете дело с WordPress то наверное не один раз сталкивались с кодировкой UTF-8. Например, любая тема, themeforest WoodMart не исключение, работает полностью с UTF-8.

Однако известно, что в естественных языках есть свои правила и ограничения. Поэтому если допустить, что поток байтов - это простой текст на естественном языке, то его кодировку можно попытаться определить с помощью различных эвристических правил и статистики.

Например, если часто встречается байт b'\x00', то это, скорее всего, 16- или 32-разрядная кодировка, но не 8-разрядная схема, потому что нулевые байты в открытом тексте - очевидная ошибка.

Если часто встречается последовательность b'\x20\x00', то это, наверное, символ пробела(U+0020) в кодировке UTF-16LE, а не малоизвестный символ U+2000 EN QUAD.

Именно так и работает пакет Chardet - универсальный детектор кодировки символов( https://pypi.python.org/pypi/chardet ) - который пытается распознать одну из 30 поддерживаемых кодировок.

Chardet - написанная на Python библиотека, которую вы можете включить в свою программу, а, кроме нее, пакет содержит также командную утилиту chardetect. Вот обычный пример запуска команды chardetect если дать ей имя файла как первый аргумент:

$ chardetect my_python_script.py
my_python_script.py: utf-8 with confidence 0.99

Как же определить кодировку последовательности байтов файла не из командной строки, а использовав модуль chardet?

Используйте следующий пример кода:

import chardet    
neededFile = open("my_python_script.py", 'rb')
rawdata = neededFile.read()
result = chardet.detect(rawdata)
charenc = result['encoding']
neededFile.close() # закрываем файл, освобождаем ресурсы

Хотя в самих двоичных последовательностях закодированного текста обычно нет явных указаний на кодировку, в некоторых UTF-форматах в начале файла может находиться маркер порядка байтов.

Советуем вам следующее видео к просмотру:

Комментариев: 5
  1. помогли спасибо

  2. https://ru.wikipedia.org

    [url=https://ru.wikipedia.org]Текст[/url]

    Текст

  3. Спасибо

  4. Здравствуйте уважаемые! [url=https://video-camer.ru/catalog/videokamery-v-veshchakh/]Видеокамеры в вещах[/url]

    Автоаксессуары – это широкая группа товаров, которую можно условно разделить на 3 подкатегории: автомобильные аксессуары для интерьера, экстерьера и полезные приспособления. Каждая из них включает в себя большое количество товаров разных типов.Предметы интерьера салона-Эти аксессуары предназначены для использования внутри салона автомобиля. Они служат для обеспечения большего комфорта водителя и позволяют держать различные мелочи под рукой.Элементы экстерьера-Назначение этих аксессуаров самое разное – от декора до перевозки грузов, которые не умещаются в багажник. Полезные приспособления-Эти автоаксессуары для авто помогут водителю в самостоятельном обслуживании машины и уходе за ней.

    От всей души Вам всех благ!

  5. Приветствую Вас дамы и господа! [url=https://video-camer.ru/videos/]ВИДЕООБЗОРЫ ТОВАРОВ[/url]

    Прослушивающие устройства - шпионские устройства, такие как жучки. Самый широкий выбор от шпиона до полупрофессиональных устройств на складе для продажи.С этим устройством прослушивания аудио-шпионов, вы можете слышать разговоры через стены и другие барьеры.

    От всей души Вам всех благ!

Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)