我正在使用DotNetZip。當我正在歸檔有英文名稱的文件時。但是當我存檔與文件的壞名稱結果存檔俄文名稱的文件。有人說,字符串DotNetZip編碼問題
ZipConstants.DefaultCodePage = 866;
但它不編譯。我也使用zip.UseUnicodeAsNecessary屬性,並將我的文件名轉換爲utf8和utf7。
我正在使用DotNetZip。當我正在歸檔有英文名稱的文件時。但是當我存檔與文件的壞名稱結果存檔俄文名稱的文件。有人說,字符串DotNetZip編碼問題
ZipConstants.DefaultCodePage = 866;
但它不編譯。我也使用zip.UseUnicodeAsNecessary屬性,並將我的文件名轉換爲utf8和utf7。
要創建DotNetZip一個unicode zip文件:
using (var zip = new ZipFile())
{
zip.UseUnicodeAsNecessary= true;
zip.AddFile(filename, "directory\\in\\archive");
zip.Save("archive.zip");
}
如果你想要一個特定的,具體的代碼頁,則必須使用別的東西:
using (var zip = new ZipFile())
{
zip.ProvisionalAlternateEncoding = System.Text.Encoding.GetEncoding(866);
zip.AddFile(filename, "directory\\in\\archive");
zip.Save("archive.zip");
}
檢查the documentation對於之前的那些屬性使用它們!
UseUnicodeAsNecessary已過時,建議使用以下代碼: zip.AlternateEncodingUsage = ZipOption.Always; zip.AlternateEncoding = Encoding.UTF8; – David 2012-10-31 03:50:45
zip.AlternateEncodingUsage = ZipOption.Always;
zip.AlternateEncoding = Encoding.UTF8;
Windows資源管理器不支持UTF-8編碼的zip文件。要閱讀您創建的zip文件,您必須使用支持unicode的工具或庫,例如WinRar,DotNetZip等。 – 2015-05-19 01:22:35
我已在Windows 8.1機器上成功打開UTF-8 zip文件。 – Funbit 2015-06-15 05:02:50
試試這個
zip.AddEntry("yourfile.txt", "yourtext", Encoding.GetEncoding("utf-8"));
編碼類型:encoding type info
Codest的解決方案不適合我,這一個:) – Txaku 2017-01-09 16:28:42
對不起,我這兩個庫之間有點糊塗: http://www.icsharpcode.net/OpenSource/SharpZipLib/ http://dotnetzip.codeplex.com/releases/view/27890 在第一次alll真的像我想要的那樣工作。但我很感興趣,第二次如何做到這一點。因爲第二個庫有很好的功能,可以:在檔案中添加文件,文件夾。 – Xaver 2010-04-02 08:55:10
不要將文件名轉換爲utf8,請將它留給庫來爲您完成。 – 2010-04-02 12:46:21
你提到的常量在DotNetZip中不存在。另外,不需要將您的文件名從utf-8「轉換」爲utf-7或其他任何文件。 DotNetZip將在您選擇的代碼頁中爲您執行字符串編碼。請參閱http://cheeso.members.winisp.net/DotNetZipHelp/html/aecbb638-1ecf-807e-b933-5bb1a2a95e81.htm – Cheeso 2010-04-06 21:06:56