python / python/cpython

Files with ASCII filename and UTF-8 comment lost EFS flag when writing with `zipfile`

Aperta
#152,845 1 commento 0 reazioni 1 assegnatario Vedi su GitHub

@serhiy-storchaka ci sta già lavorando.

Dal 2/7/2026.

stdlib type-bug
Lingua principale
Python
Stelle
77.2k
Fork
35.9k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug report

Bug description:

According to the spec, the EFS flag enforces the filename and comment of a file entry to be UTF-8.

However, the EFS flag is not set when a file with ASCII filename and UTF-8 comment is written through zipfile. This renders its comment at risk of mis-decoding.

Similarly, a file with ASCII filename loses its EFS flag when the central directory is rewritten in append mode. This causes an unexpected metadata mutation and introduces a structural inconsistency between the immutable Local File Header (LFH) and the rewritten Central Directory Entry (CDE). This is also a regression of gh-84353/gh-150091, before which the EFS flag was not altered.

Additionally, the metadata_encoding parameter cannot be specified when an archive is opened with 'a' mode, disallowing a proper decoding with a customized codec.

CPython versions tested on:

3.14, 3.16

Operating systems tested on:

No response

Linked PRs
  • gh-152846

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.