Skip to content

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

Description

@danny0838

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

Metadata

Metadata

Labels

stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

Fields

No fields configured for issues without a type.

Projects

Status
No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions