다음을 통해 공유


ZipArchiveEntry 이름 및 주석은 UTF8 플래그를 따름

ZipArchive는 ZIP 보관 파일에 있는 항목의 이름과 주석을 디코딩하는 데 사용되는 Encoding 매개 변수를 사용하여 만들 수 있습니다. .NET 7에서는 인코딩이 제공되지 않은 경우 시스템 기본 코드 페이지(.NET Core의 UTF8)로 대체하여 이 인코딩이 기본적으로 사용되는 회귀를 도입했습니다. 이 회귀는 .NET 9에서 수정되었습니다. 항목의 범용 비트 플래그가 UTF8을 사용해야 한다고 나타내는 경우 이를 따릅니다. UTF8 비트 플래그가 설정되지 않은 경우 사용자가 제공한 인코딩이 사용됩니다(인코딩이 제공되지 않는 경우 시스템 기본 코드 페이지로 기존 대체).

이전 동작

.NET 7 및 .NET 8에서 ZipArchive가 사용자가 지정한 entryNameEncoding 매개 변수로 인스턴스화된 경우 ZIP 보관 파일에서 항목의 이름과 주석을 디코딩할 때 항상 이 인코딩이 사용되었습니다. entryNameEncoding 은 항목에 해당 이름과 주석이 UTF8로 인코딩되었음을 나타내는 비트가 설정된 경우에도 사용되었습니다.

새 동작

.NET 9부터 ZIP 보관 항목의 이름과 주석이 디코딩되면 UTF8 비트 플래그가 적용됩니다. 사용자가 제공한 entryNameEncoding 매개 변수는 이 비트 플래그가 설정되지 않은 경우에만 항목의 이름과 주석을 디코딩하는 데 사용됩니다.

도입된 버전

.NET 9 RC 1

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

이 변경은 .NET 7 및 .NET 8의 회귀를 수정합니다. 또한 ZIP 파일 형식 사양, 섹션 4.4.4 및 부록 D를 준수하도록 ZipArchive를 반환합니다.

코드가 ZipArchive 생성자에 인코딩을 전달하는 경우, 이 인코딩이 모든 상황에서 적용되지 않는다는 점에 유의합니다. 항목의 UTF8 비트가 설정되지 않은 경우에만 사용됩니다.

ZipArchive를 사용하여 UTF8이 아닌 형식으로 인코딩된 이름의 ZIP 항목을 구문 분석하는 경우(그러나 UTF8 비트 플래그가 설정되어 있음), 더 이상 구문 분석할 수 없습니다. 이전 동작은 버그였습니다.

영향을 받는 API