anchor.diff:  class ZipEncoder {
     late _ZipEncoderData _data;
     OutputStreamBase? _output;
  +  final Encoding filenameEncoding;
  +
  +  ZipEncoder({this.filenameEncoding = const Utf8Codec()});
   
     List<int>? encode(Archive archive,
         {int level = Deflate.BEST_SPEED,
  
positive.code:       output.writeUint32(crc32);
        output.writeUint32(compressedSize);
        output.writeUint32(uncompressedSize);
        output.writeUint16(filenameUtf8.length);
        output.writeUint16(extraField.length);
        output.writeUint16(fileCommentUtf8.length);
        output.writeUint16(diskNumberStart);
        output.writeUint16(internalFileAttributes);
        output.writeUint32(externalFileAttributes);
        output.writeUint32(localHeaderOffset);
        output.writeBytes(filenameUtf8);
        output.writeBytes(extraField);
        output.writeBytes(fileCommentUtf8);
      }
  
negative.code:       compressedData = InputStream(bytes);
      }
  
      var encodedFilename = filenameEncoding.encode(file.name);
      var comment =
          file.comment != null ? Utf8Encoder().convert(file.comment!) : null;
  
      _data.localFileSize += 30 + encodedFilename.length + compressedData!.length;
  
      _data.centralDirectorySize +=
          46 + encodedFilename.length + (comment != null ? comment.length : 0);
  
      fileData.crc32 = crc32;
      fileData.compressedSize = compressedData.length;
  