解开包含中文字符的文件



我有一个zip文件。它包含一些文件。文件包含汉字,所以我使用了

   ZipInputStream zipStream = new ZipInputStream(
            new BufferedInputStream(new FileInputStream(zipFilePath), BUFFER_SIZE),
            Charset.forName("ISO-8859-1")
    );

......

   FileOutputStream fileOutput = new FileOutputStream(uncompressedFileName);
                while (zipStream.available() > 0) {
                    fileOutput.write(zipStream.read());
                }

提取可成功地运行。我想使用EncodingDetect方法查找编码后,但现在服务不运行。它返回NOMATCH。如果我直接将文件发送到服务,则该服务正在运行。它像UTF-8一样正确地找到CharSet。

我猜Charset.forName("ISO-8859-1")提取文件但格式已损坏。您有任何想法吗?

问题是zip中文件名的字符集。UTF-8引起了一个错误(显然在UTF-8中没有文件名(,因为UTF-8需要作为多字节序列的特殊格式,并且显然存在错误的"多键"序列。

iso-8859-1是一个单个字节,接受垃圾。

您应该做的是尝试少量的中国炭接,因此文件名字符串正确填充。Java字符串包含Unicode,因此可以保持任何字符集。谈论中文的人的帮助可能是有道理的。

,然后尝试用这些名称编写文件。如果在PC上不成功,则必须使用人造文件名,也许是中文的音译。

可以创建从原始文件名到实际文件名的翻译表作为utf-8文本文件,也许是bom,' ufeff`在初始文件中。

iso-8859-1 charset绝对不支持中文。使用UTF-8代替ISO-8859-1

最新更新