请问一个例子,我用Google搜索但没有找到任何合适的结果。
我想提供标志,以便在文件名
的情况下使用其原始名称压缩文件有特殊字符。例如目前我正在使用
ZipEntry entry = new ZipEntry(file.FullName.Substring(directory.FullName.Length + 1));
entry.Flags |= 2048; // enable UTF8 file names
什么应该是支持特殊字符文件名的标志?
感谢名单
答案 0 :(得分:3)
此组件的源代码可在此处获取:
http://www.icsharpcode.net/opensource/sharpziplib/Download.aspx
如果您下载源代码并查看ZipEntry的代码,您将找到Flags
属性的以下注释。
///
/// Get/Set general purpose bit flag for entry
///
///
/// General purpose bit flag
///
/// Bit 0: If set, indicates the file is encrypted
/// Bit 1-2 Only used for compression type 6 Imploding, and 8, 9 deflating
/// Imploding:
/// Bit 1 if set indicates an 8K sliding dictionary was used. If clear a 4k dictionary was used
/// Bit 2 if set indicates 3 Shannon-Fanno trees were used to encode the sliding dictionary, 2 otherwise
///
/// Deflating:
/// Bit 2 Bit 1
/// 0 0 Normal compression was used
/// 0 1 Maximum compression was used
/// 1 0 Fast compression was used
/// 1 1 Super fast compression was used
///
/// Bit 3: If set, the fields crc-32, compressed size
/// and uncompressed size are were not able to be written during zip file creation
/// The correct values are held in a data descriptor immediately following the compressed data.
/// Bit 4: Reserved for use by PKZIP for enhanced deflating
/// Bit 5: If set indicates the file contains compressed patch data
/// Bit 6: If set indicates strong encryption was used.
/// Bit 7-10: Unused or reserved
/// Bit 11: If set the name and comments for this entry are in <a href="http://www.unicode.org">unicode</a>.
/// Bit 12-15: Unused or reserved
///
/// <seealso cref="IsUnicodeText"></seealso>
/// <seealso cref="IsCrypted"></seealso>
所以,将2048 ORVE标记为Flags就像你看到的那样正确。或者,您可以设置IsUnicodeText属性,该属性执行相同的操作,但使代码看起来更清晰:
entry.IsUnicodeText = true;