'Declaration
Public Property DefaultPasswordTextEncoding As Encoding
'Usage
Dim instance As ZipArchive
Dim value As Encoding
instance.DefaultPasswordTextEncoding = value
value = instance.DefaultPasswordTextEncoding
public Encoding DefaultPasswordTextEncoding {get; set;}
Property Value
A Encoding object that represents the text encoding to use when processing passwords. By default, the value is a null reference (Nothing in Visual Basic).
Remarks
There is no accepted standard on how to encode non-ASCII characters in passwords. That means every zip tool/library can end up doing it differently. This is why it is strongly recommended to use ASCII characters only in passwords if compatibility is important as it's the only "standard" that all zip tools will honor.
If Xceed Zip components are the only tools used, non-ASCII passwords, there won't be an issue. But if the resulting zip file will be shared with another zip tool/library or vice-versa, it won't work because Xceed might encode passwords differently than other tools.
using System;
using Xceed.FileSystem;
using Xceed.Zip;
namespace DocumentationExamples.Zip
{
class DefaultPasswordTextEncodingProperty
{
staticvoid DefaultPasswordTextEncodingExample()
{
string password = "kf/E@´d!i_p7/ow`TgK!SV1w65X<y#";
// Setup a text encoding object that mimics the password encoding performed by 7-Zip
System.Text.Encoding encoding = System.Text.Encoding.GetEncoding( 1252, new System.Text.EncoderExceptionFallback(), new System.Text.DecoderReplacementFallback( "_" ) );
AbstractFolder baseFolder = new DiskFolder( @"D:\DocumentationExamples.Zip" );
AbstractFile zipFile = baseFolder.GetFile( "DefaultPasswordTextEncodingExample.zip" );
if( zipFile.Exists ) zipFile.Delete();
ZipArchive zip = new ZipArchive( zipFile );
zip.DefaultEncryptionMethod = EncryptionMethod.WinZipAes;
zip.DefaultEncryptionPassword = password;
zip.DefaultDecryptionPassword = password;
// Make the archive use our own text encoding for the password
zip.DefaultPasswordTextEncoding = encoding;
using( new AutoBatchUpdate( zip ) )
{
AbstractFile file = new DiskFile( @"D:\SomeFile.dat" );
file.CopyTo( zip, true );
}
AbstractFolder folder = baseFolder.GetFolder( "Output" );
zip.CopyFilesTo( folder, true, true );
}
}
}
Imports Microsoft.VisualBasic
Imports System
Imports Xceed.FileSystem
Imports Xceed.Zip
Namespace DocumentationExamples.Zip
FriendClass DefaultPasswordTextEncodingProperty
PrivateSharedSub DefaultPasswordTextEncodingExample()
Dim password AsString = "kf/E@�d!i_p7/ow`TgK!SV1w65X<y#"' Setup a text encoding object that mimics the password encoding performed by 7-Zip
Dim encoding As System.Text.Encoding = System.Text.Encoding.GetEncoding(1252, New System.Text.EncoderExceptionFallback(), New System.Text.DecoderReplacementFallback("_"))
Dim baseFolder As AbstractFolder = New DiskFolder("D:\DocumentationExamples.Zip")
Dim zipFile As AbstractFile = baseFolder.GetFile("DefaultPasswordTextEncodingExample.zip")
If zipFile.Exists Then
zipFile.Delete()
EndIfDim zip AsNew ZipArchive(zipFile)
zip.DefaultEncryptionMethod = EncryptionMethod.WinZipAes
zip.DefaultEncryptionPassword = password
zip.DefaultDecryptionPassword = password
' Make the archive use our own text encoding for the password
zip.DefaultPasswordTextEncoding = encoding
Using TempAutoBatchUpdate As AutoBatchUpdate = New AutoBatchUpdate(zip)
Dim file As AbstractFile = New DiskFile("D:\SomeFile.dat")
file.CopyTo(zip, True)
EndUsingDim folder As AbstractFolder = baseFolder.GetFolder("Output")
zip.CopyFilesTo(folder, True, True)
End SubEnd ClassEnd Namespace
Requirements
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2