Кодировка при разархивации zip архива в эндпоинте

Я работаю с загрузкой ZIP-архивов на сервер, и у меня возникает проблема с неправильным отображением имен файлов в архиве, содержащих кириллические символы. Например, файл с именем 'новый.txt' при извлечении отображается как '¡«óδ⌐.txt'. Я пробовал использовать zf.encoding в функции extract_zip, но это не решило проблему. Как можно исправить ситуацию, чтобы имена файлов с кириллическими символами правильно отображались при извлечении из ZIP-архива?

@files_router.post("/upload/")
async def upload_file(file: UploadFile = File(...)) -> dict[str, str]:
    try:
        file_data = file.file.read()
        files_in_zip = ArchiveValidator.extract_zip(file_data)
        return {"filename": file.filename}

    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

    def extract_zip(file_bytes: bytes) -> dict[str, bytes]:
        with io.BytesIO(file_bytes) as byte_stream:
            with zipfile.ZipFile(byte_stream) as zf:
                return {name: zf.read(name) for name in zf.namelist()}
``

Ответы (0 шт):