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

Я пытаюсь декодировать последовательность байтов в строку Unicode из файлов различных типов, таких как файлы .exe, .dll и .deb, используя библиотеку pefile в Python. Однако иногда я сталкиваюсь с ошибками декодирования Unicode. Как я могу эффективно обрабатывать эти ошибки?

Вот соответствующий фрагмент кода:

import pefile

def get_section_addresses(file_path):
    section_addresses = {}
    pe = pefile.PE(file_path)
    for section in pe.sections:
        section_addresses[section.Name.decode().strip('\x00')] = section.VirtualAddress
    return section_addresses

section_addresses = get_section_addresses('D:/Binary/file/rufus.exe')
for name, address in section_addresses.items():
    print(f"{name}:{address:08X}")

Я использую pefile для анализа файлов Portable Executable (PE), извлекая имена разделов и соответствующие им виртуальные адреса. Однако при расшифровке названий разделов я иногда сталкиваюсь с ошибками декодирования Юникода.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
59
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я реализовал обработку ошибок, используя вложенные блоки try-Exception.

 try:
    pe = pefile.PE(file_path)
    for section in pe.sections:
        try:
            name = section.Name.decode().strip('\x00')
        except UnicodeDecodeError:
            name = "Undecodable"
        section_addresses[name] = section.VirtualAddress
except pefile.PEFormatError:
    print(f"Error: {file_path} is not a valid PE file.")
return section_addresses

Вы можете указать кодировку и попробовать игнорировать ошибки

section.Name.decode('utf-8', errors = 'ignore').strip('\x00')

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