Кодировка при разархивации 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()}
``