压缩文件中的日文文件名在ArchiveInputStream.getNextEntry()中无法正确显示.getName()

时间:2017-05-02 06:20:27

标签: java apache zip inputstream apache-commons

我的操作系统是日语版的Windows 10。使用Windows压缩文件工具,我创建了一个包含日文文件名的文件的压缩文件。当我从这个文件生成ArchiveInputStream并使用ArchiveInputStream.getNextEntry()。getName()获取文件的文件名时,日文文件名是乱码。例如,新しいテキストドキュメント.txt成为�V�����e�L�X�g�h�L�������g.txt。我该如何解决这个问题?

S3Object s3Object = s3Client.getObject(new GetObjectRequest(s3Setting.getBucketName(), s3FileKey));
InputStream inputStream = s3Object.getObjectContent();
try (ArchiveInputStream archiveStream = new ArchiveStreamFactory().createArchiveInputStream(inputStream)) {
    ArchiveEntry entry = archiveStream.getNextEntry();
    while (entry != null) {
        String filename = StringUtils.removeEnd(FilenameUtils.normalize(entry.getName(), true), UNIX_SEPARATOR)
        ...
        entry = archiveStream.getNextEntry();
    }
}

0 个答案:

没有答案