import java.util.zip.ZipOutputStream;
import java.io.FileOutputStream;
import java.nio.charset.Charset;

FileOutputStream fos = new FileOutputStream("src/main/resources/dirCompressed.zip");

// ❗❗❗指定编码可以避免因为环境配置的问题导致的文件名乱码
ZipOutputStream zipOut = new ZipOutputStream(fos, Charset.forName("utf-8"));

网上有很多文章要添加jar包依赖
例如:

在JDK8之前java自带的ZipOutputStream方法确实没有解决该乱码问题,
之后可以通过java原生的ZipOutputStream指定编码格式来解决乱码问题.