# Struct ipworkszip::Zstd

TBD.

## Syntax

```text
ipworkszip::Zstd
```

## Remarks

TBD

### Object Lifetime

 The *new()* method returns a mutable reference to a struct instance. The object itself is kept in the global list maintained by IPWorksZip. Due to this, the Zstd struct cannot be disposed of automatically. Please, call the *dispose(&mut; self)* method of Zstd when you have finished using the instance.

## Property List

*The following is the full list of the properties of the struct with short descriptions. Click on the links for further details.*

|  |  |
| --- | --- |
| [compression_level](#compression_level-property-zstd-struct) | The compression level to use. |
| [input_data](#input_data-property-zstd-struct) | Specifies the data to compress or decompress. |
| [output_data](#output_data-property-zstd-struct) | The output data after compression or decompression. |

## Method List

*The following is the full list of the methods of the struct with short descriptions. Click on the links for further details.*

|  |  |
| --- | --- |
| [compress_block](#compress_block-method-zstd-struct) | Compresses a block of data. |
| [compress_data](#compress_data-method-zstd-struct) | Compresses the specified data. |
| [config](#config-method-zstd-struct) | Sets or retrieves a configuration setting. |
| [decompress_block](#decompress_block-method-zstd-struct) | Decompresses a block of data. |
| [decompress_data](#decompress_data-method-zstd-struct) | Decompresses the specified data. |
| [reset](#reset-method-zstd-struct) | Resets the struct. |

## Event List

*The following is the full list of the events fired by the struct with short descriptions. Click on the links for further details.*

|  |  |
| --- | --- |
| [on_compressed_data](#on_compressed_data-event-zstd-struct) | This event fires with compressed data. |
| [on_decompressed_data](#on_decompressed_data-event-zstd-struct) | This event fires with decompressed data. |
| [on_error](#on_error-event-zstd-struct) | Information about errors during data delivery. |

## Config Settings

*The following is a list of config settings for the struct with short descriptions. Click on the links for further details.*

|  |  |
| --- | --- |
| [BuildInfo](#BuildInfo) | Information about the product's build. |
| [CodePage](#CodePage) | The system code page used for Unicode to Multibyte translations. |
| [LicenseInfo](#LicenseInfo) | Information about the current license. |
| [MaskSensitiveData](#MaskSensitiveData) | Whether sensitive data is masked in log messages. |
| [UseInternalSecurityAPI](#UseInternalSecurityAPI) | Whether or not to use the system security libraries or an internal implementation. |

# compression_level property ([Zstd](#struct-ipworkszipzstd) Struct)

The compression level to use.

## Syntax

*Rust Syntax*

```text
fn compression_level(&self ) -> Result<i32, IPWorksZipError> fn set_compression_level(&self, value : i32) ->  Option<IPWorksZipError>
```

## Default Value

4

## Remarks

The compression level to use, from 1 to 6. Higher values will cause the component to compress better; lower values will cause the component to compress faster.

When get_compression_stream is invoked the stream will be created with the specified compression level. After a stream has been created it is independent of the control, and changing compression_level will have no effect on existing streams.

## Data Type

i32

# input_data property ([Zstd](#struct-ipworkszipzstd) Struct)

Specifies the data to compress or decompress.

## Syntax

*Rust Syntax*

```text
fn input_data(&self ) -> Result<Vec<u8>, IPWorksZipError> fn set_input_data(&self, value : Vec<u8>) ->  Option<IPWorksZipError>
fn set_input_data_ref(&self, value : &[u8]) ->  Option<IPWorksZipError>
```

## Default Value

""

## Remarks

This property specifies the data to compress or decompress.

When decompressing this should be set to the compressed data before calling [decompress_data](#decompress_data-method-zstd-struct) or [decompress_block](#decompress_block-method-zstd-struct).

When compressing this should be set to the decompressed data before calling [compress_data](#compress_data-method-zstd-struct) or [compress_block](#compress_block-method-zstd-struct).

When performing operations on multiple chunks of data, note that this property is not automatically cleared after each operation.

## Data Type

Vec

# output_data property ([Zstd](#struct-ipworkszipzstd) Struct)

The output data after compression or decompression.

## Syntax

*Rust Syntax*

```text
fn output_data(&self ) -> Result<Vec<u8>, IPWorksZipError>
```

## Default Value

""

## Remarks

This property holds the compressed or decompressed data after [compress_data](#compress_data-method-zstd-struct) or [decompress_data](#decompress_data-method-zstd-struct) is called.

This property is not applicable when calling [compress_block](#compress_block-method-zstd-struct) or [decompress_block](#decompress_block-method-zstd-struct).

This property is read-only.

## Data Type

Vec

# compress_block method ([Zstd](#struct-ipworkszipzstd) Struct)

Compresses a block of data.

## Syntax

*Rust Syntax*

```text
fn compress_block(&self, last_block : bool) -> Result<(), IPWorksZipError>
```

## Remarks

This method compresses the block of data specified by [input_data](#input_data-property-zstd-struct).

The compress_block and [decompress_block](#decompress_block-method-zstd-struct) methods operate on blocks (chunks) of data. The methods may be used to compress and decompress data as it becomes available.

Note that when using blocks of data the [output_data](#output_data-property-zstd-struct) property is not applicable. Instead data is made available through the [on_compressed_data](#on_compressed_data-event-zstd-struct) and [on_decompressed_data](#on_decompressed_data-event-zstd-struct) events.

If all data is available ahead of time [compress_data](#compress_data-method-zstd-struct) and [decompress_data](#decompress_data-method-zstd-struct) may be called instead.

### Compress Data

Set [input_data](#input_data-property-zstd-struct) to the current block to be compressed. Next call compress_block to compress the current block. Note that compress_block takes a *LastBlock* parameter. If the block of data is the final block to be compressed set this to True. For all other blocks set this to False.

During compression the [on_compressed_data](#on_compressed_data-event-zstd-struct) event will fire with the compressed data. Note that this event may not fire for every call to compress_block due to the way the compression algorithm operates. For example:

```text
zipstream.InputDataB = MyDecompressedData;
zipstream.CompressBlock();
```

 Data is accumulated inside the [on_compressed_data](#on_compressed_data-event-zstd-struct) event:

```text
private static void Zipstream_OnCompressedData(object sender, ZipstreamCompressedDataEventArgs e)
{
  DoSomethingWith(e.DataB);
}
```

Note that [output_data](#output_data-property-zstd-struct) is not applicable when compressing block data.

### Decompress Data

Set [input_data](#input_data-property-zstd-struct) to the current block to be decompressed. Next call [decompress_block](#decompress_block-method-zstd-struct) to decompress the current block.

During decompression the [on_decompressed_data](#on_decompressed_data-event-zstd-struct) event will fire with the decompressed data. Note that this event may not fire for every call to [decompress_block](#decompress_block-method-zstd-struct) due to the way the decompression algorithm operates. For example:

```text
zipstream.InputDataB = MyCompressedData;
zipstream.DecompressBlock();
```

 Data is accumulated inside the [on_decompressed_data](#on_decompressed_data-event-zstd-struct) event:

```text
private static void Zipstream_OnDecompressedData(object sender, ZipstreamDecompressedDataEventArgs e)
{
  DoSomethingWith(e.DataB);
}
```

Note that [output_data](#output_data-property-zstd-struct) is not applicable when decompressing block data.

# compress_data method ([Zstd](#struct-ipworkszipzstd) Struct)

Compresses the specified data.

## Syntax

*Rust Syntax*

```text
fn compress_data(&self) -> Result<(), IPWorksZipError>
```

## Remarks

This method compresses the data specified by [input_data](#input_data-property-zstd-struct). After calling this method [output_data](#output_data-property-zstd-struct) holds the compressed data.

The compress_data and [decompress_data](#decompress_data-method-zstd-struct) methods operate on the complete blob of data. The entire compressed or decompressed data must be set to [input_data](#input_data-property-zstd-struct) before calling either method.

To compress and decompress data in blocks (chunks) see [compress_block](#compress_block-method-zstd-struct) and [decompress_block](#decompress_block-method-zstd-struct).

### Compress Data

Set [input_data](#input_data-property-zstd-struct) to the decompressed data. This should be the entire data to be compressed. Next call compress_data. After compression [output_data](#output_data-property-zstd-struct) will hold the compressed data. For example:

```text
zipstream.InputDataB = MyDecompressedData;
zipstream.CompressData();
MyCompressedData = zipstream.OutputDataB;
```

In addition to [output_data](#output_data-property-zstd-struct), the compressed data may also be accumulated within the [on_compressed_data](#on_compressed_data-event-zstd-struct) event.

### Decompress Data

Set [input_data](#input_data-property-zstd-struct) to the compressed data. This should be the entire data to be decompressed. Next call [decompress_data](#decompress_data-method-zstd-struct). After decompression [output_data](#output_data-property-zstd-struct) will hold the decompressed data. For example:

```text
zipstream.InputDataB = MyCompressedData;
zipstream.DecompressData();
MyDecompressedData = zipstream.OutputDataB;
```

In addition to [output_data](#output_data-property-zstd-struct), the compressed data may also be accumulated within the [on_decompressed_data](#on_decompressed_data-event-zstd-struct) event.

# config method ([Zstd](#struct-ipworkszipzstd) Struct)

Sets or retrieves a configuration setting.

## Syntax

*Rust Syntax*

```text
fn config(&self, configuration_string : &str) ->  Result<String, IPWorksZipError>
```

## Remarks

config is a generic method available in every struct. It is used to set and retrieve [configuration settings](#config-settings-zstd-struct) for the struct.

These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the struct, access to these *internal properties* is provided through the config method.

To set a configuration setting named *PROPERTY*, you must call *Config("PROPERTY=VALUE")*, where *VALUE* is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a [configuration setting](#config-settings-zstd-struct), you must call *Config("PROPERTY")*. The value will be returned as a string.

# decompress_block method ([Zstd](#struct-ipworkszipzstd) Struct)

Decompresses a block of data.

## Syntax

*Rust Syntax*

```text
fn decompress_block(&self) -> Result<(), IPWorksZipError>
```

## Remarks

This method decompresses the block of data specified by [input_data](#input_data-property-zstd-struct).

The [compress_block](#compress_block-method-zstd-struct) and decompress_block methods operate on blocks (chunks) of data. The methods may be used to compress and decompress data as it becomes available.

Note that when using blocks of data the [output_data](#output_data-property-zstd-struct) property is not applicable. Instead data is made available through the [on_compressed_data](#on_compressed_data-event-zstd-struct) and [on_decompressed_data](#on_decompressed_data-event-zstd-struct) events.

If all data is available ahead of time [compress_data](#compress_data-method-zstd-struct) and [decompress_data](#decompress_data-method-zstd-struct) may be called instead.

### Compress Data

Set [input_data](#input_data-property-zstd-struct) to the current block to be compressed. Next call [compress_block](#compress_block-method-zstd-struct) to compress the current block. Note that [compress_block](#compress_block-method-zstd-struct) takes a *LastBlock* parameter. If the block of data is the final block to be compressed set this to True. For all other blocks set this to False.

During compression the [on_compressed_data](#on_compressed_data-event-zstd-struct) event will fire with the compressed data. Note that this event may not fire for every call to [compress_block](#compress_block-method-zstd-struct) due to the way the compression algorithm operates. For example:

```text
zipstream.InputDataB = MyDecompressedData;
zipstream.CompressBlock();
```

 Data is accumulated inside the [on_compressed_data](#on_compressed_data-event-zstd-struct) event:

```text
private static void Zipstream_OnCompressedData(object sender, ZipstreamCompressedDataEventArgs e)
{
  DoSomethingWith(e.DataB);
}
```

Note that [output_data](#output_data-property-zstd-struct) is not applicable when compressing block data.

### Decompress Data

Set [input_data](#input_data-property-zstd-struct) to the current block to be decompressed. Next call decompress_block to decompress the current block.

During decompression the [on_decompressed_data](#on_decompressed_data-event-zstd-struct) event will fire with the decompressed data. Note that this event may not fire for every call to decompress_block due to the way the decompression algorithm operates. For example:

```text
zipstream.InputDataB = MyCompressedData;
zipstream.DecompressBlock();
```

 Data is accumulated inside the [on_decompressed_data](#on_decompressed_data-event-zstd-struct) event:

```text
private static void Zipstream_OnDecompressedData(object sender, ZipstreamDecompressedDataEventArgs e)
{
  DoSomethingWith(e.DataB);
}
```

Note that [output_data](#output_data-property-zstd-struct) is not applicable when decompressing block data.

# decompress_data method ([Zstd](#struct-ipworkszipzstd) Struct)

Decompresses the specified data.

## Syntax

*Rust Syntax*

```text
fn decompress_data(&self) -> Result<(), IPWorksZipError>
```

## Remarks

This method decompresses the data specified by [input_data](#input_data-property-zstd-struct). After calling this method [output_data](#output_data-property-zstd-struct) holds the decompressed data.

The [compress_data](#compress_data-method-zstd-struct) and decompress_data methods operate on the complete blob of data. The entire compressed or decompressed data must be set to [input_data](#input_data-property-zstd-struct) before calling either method.

To compress and decompress data in blocks (chunks) see [compress_block](#compress_block-method-zstd-struct) and [decompress_block](#decompress_block-method-zstd-struct).

### Compress Data

Set [input_data](#input_data-property-zstd-struct) to the decompressed data. This should be the entire data to be compressed. Next call [compress_data](#compress_data-method-zstd-struct). After compression [output_data](#output_data-property-zstd-struct) will hold the compressed data. For example:

```text
zipstream.InputDataB = MyDecompressedData;
zipstream.CompressData();
MyCompressedData = zipstream.OutputDataB;
```

In addition to [output_data](#output_data-property-zstd-struct), the compressed data may also be accumulated within the [on_compressed_data](#on_compressed_data-event-zstd-struct) event.

### Decompress Data

Set [input_data](#input_data-property-zstd-struct) to the compressed data. This should be the entire data to be decompressed. Next call decompress_data. After decompression [output_data](#output_data-property-zstd-struct) will hold the decompressed data. For example:

```text
zipstream.InputDataB = MyCompressedData;
zipstream.DecompressData();
MyDecompressedData = zipstream.OutputDataB;
```

In addition to [output_data](#output_data-property-zstd-struct), the compressed data may also be accumulated within the [on_decompressed_data](#on_decompressed_data-event-zstd-struct) event.

# reset method ([Zstd](#struct-ipworkszipzstd) Struct)

Resets the struct.

## Syntax

*Rust Syntax*

```text
fn reset(&self) -> Result<(), IPWorksZipError>
```

## Remarks

reset resets the state of the struct. All properties will be set to their default values, and any files open will be closed.

# on_compressed_data event ([Zstd](#struct-ipworkszipzstd) Struct)

This event fires with compressed data.

## Syntax

*Rust Syntax*

```text
// ZstdCompressedDataEventArgs carries the Zstd CompressedData event's parameters.
pub struct ZstdCompressedDataEventArgs {
  fn data(&self) -> &[u8]
}

// ZstdCompressedDataEvent defines the signature of the Zstd CompressedData event's handler function.
pub trait ZstdCompressedDataEvent {
  fn on_compressed_data(&self, sender : Zstd, e : &mut ZstdCompressedDataEventArgs);
}

impl <'a> Zstd<'a> {
  pub fn on_compressed_data(&self) -> &'a dyn ZstdCompressedDataEvent;
  pub fn set_on_compressed_data(&mut self, value : &'a dyn ZstdCompressedDataEvent);
  ...
}
```

## Remarks

The on_compressed_data event fires as compressed data is available when [compress_data](#compress_data-method-zstd-struct) or [compress_block](#compress_block-method-zstd-struct) is called. This may fire one or more times when data is compressed.

*data* holds the current block of compressed data.

# on_decompressed_data event ([Zstd](#struct-ipworkszipzstd) Struct)

This event fires with decompressed data.

## Syntax

*Rust Syntax*

```text
// ZstdDecompressedDataEventArgs carries the Zstd DecompressedData event's parameters.
pub struct ZstdDecompressedDataEventArgs {
  fn data(&self) -> &[u8]
}

// ZstdDecompressedDataEvent defines the signature of the Zstd DecompressedData event's handler function.
pub trait ZstdDecompressedDataEvent {
  fn on_decompressed_data(&self, sender : Zstd, e : &mut ZstdDecompressedDataEventArgs);
}

impl <'a> Zstd<'a> {
  pub fn on_decompressed_data(&self) -> &'a dyn ZstdDecompressedDataEvent;
  pub fn set_on_decompressed_data(&mut self, value : &'a dyn ZstdDecompressedDataEvent);
  ...
}
```

## Remarks

The on_decompressed_data event fires as compressed data is available when [decompress_data](#decompress_data-method-zstd-struct) or [decompress_block](#decompress_block-method-zstd-struct) is called. This may fire one or more times as data is decompressed.

*data* holds the current block of decompressed data.

# on_error event ([Zstd](#struct-ipworkszipzstd) Struct)

Information about errors during data delivery.

## Syntax

*Rust Syntax*

```text
// ZstdErrorEventArgs carries the Zstd Error event's parameters.
pub struct ZstdErrorEventArgs {
  fn error_code(&self) -> i32
  fn description(&self) -> &String
}

// ZstdErrorEvent defines the signature of the Zstd Error event's handler function.
pub trait ZstdErrorEvent {
  fn on_error(&self, sender : Zstd, e : &mut ZstdErrorEventArgs);
}

impl <'a> Zstd<'a> {
  pub fn on_error(&self) -> &'a dyn ZstdErrorEvent;
  pub fn set_on_error(&mut self, value : &'a dyn ZstdErrorEvent);
  ...
}
```

## Remarks

The on_error event is fired in case of exceptional conditions during message processing. Normally the struct fails with an error.

*error_code* contains an error code and *description* contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the [Error Codes](#trappable-errors-zstd-struct) section.

# Config Settings ([Zstd](#struct-ipworkszipzstd) Struct)

 The struct accepts one or more of the following *configuration settings*. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the struct, access to these *internal properties* is provided through the [config](#config-method-zstd-struct) method.

*No configuration settings defined.*

### Base Config Settings

**BuildInfo**: Information about the product's build.When queried, this setting will return a string containing information about the product's build.

**CodePage**: The system code page used for Unicode to Multibyte translations.The default code page is Unicode UTF-8 (65001).

The following is a list of valid code page identifiers:

|  |  |
| --- | --- |
| Identifier | Name |
| 037 | IBM EBCDIC - U.S./Canada |
| 437 | OEM - United States |
| 500 | IBM EBCDIC - International |
| 708 | Arabic - ASMO 708 |
| 709 | Arabic - ASMO 449+, BCON V4 |
| 710 | Arabic - Transparent Arabic |
| 720 | Arabic - Transparent ASMO |
| 737 | OEM - Greek (formerly 437G) |
| 775 | OEM - Baltic |
| 850 | OEM - Multilingual Latin I |
| 852 | OEM - Latin II |
| 855 | OEM - Cyrillic (primarily Russian) |
| 857 | OEM - Turkish |
| 858 | OEM - Multilingual Latin I + Euro symbol |
| 860 | OEM - Portuguese |
| 861 | OEM - Icelandic |
| 862 | OEM - Hebrew |
| 863 | OEM - Canadian-French |
| 864 | OEM - Arabic |
| 865 | OEM - Nordic |
| 866 | OEM - Russian |
| 869 | OEM - Modern Greek |
| 870 | IBM EBCDIC - Multilingual/ROECE (Latin-2) |
| 874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15) |
| 875 | IBM EBCDIC - Modern Greek |
| 932 | ANSI/OEM - Japanese, Shift-JIS |
| 936 | ANSI/OEM - Simplified Chinese (PRC, Singapore) |
| 949 | ANSI/OEM - Korean (Unified Hangul Code) |
| 950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC) |
| 1026 | IBM EBCDIC - Turkish (Latin-5) |
| 1047 | IBM EBCDIC - Latin 1/Open System |
| 1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol) |
| 1141 | IBM EBCDIC - Germany (20273 + Euro symbol) |
| 1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol) |
| 1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol) |
| 1144 | IBM EBCDIC - Italy (20280 + Euro symbol) |
| 1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol) |
| 1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol) |
| 1147 | IBM EBCDIC - France (20297 + Euro symbol) |
| 1148 | IBM EBCDIC - International (500 + Euro symbol) |
| 1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol) |
| 1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646) |
| 1201 | Unicode UCS-2 Big-Endian |
| 1250 | ANSI - Central European |
| 1251 | ANSI - Cyrillic |
| 1252 | ANSI - Latin I |
| 1253 | ANSI - Greek |
| 1254 | ANSI - Turkish |
| 1255 | ANSI - Hebrew |
| 1256 | ANSI - Arabic |
| 1257 | ANSI - Baltic |
| 1258 | ANSI/OEM - Vietnamese |
| 1361 | Korean (Johab) |
| 10000 | MAC - Roman |
| 10001 | MAC - Japanese |
| 10002 | MAC - Traditional Chinese (Big5) |
| 10003 | MAC - Korean |
| 10004 | MAC - Arabic |
| 10005 | MAC - Hebrew |
| 10006 | MAC - Greek I |
| 10007 | MAC - Cyrillic |
| 10008 | MAC - Simplified Chinese (GB 2312) |
| 10010 | MAC - Romania |
| 10017 | MAC - Ukraine |
| 10021 | MAC - Thai |
| 10029 | MAC - Latin II |
| 10079 | MAC - Icelandic |
| 10081 | MAC - Turkish |
| 10082 | MAC - Croatia |
| 12000 | Unicode UCS-4 Little-Endian |
| 12001 | Unicode UCS-4 Big-Endian |
| 20000 | CNS - Taiwan |
| 20001 | TCA - Taiwan |
| 20002 | Eten - Taiwan |
| 20003 | IBM5550 - Taiwan |
| 20004 | TeleText - Taiwan |
| 20005 | Wang - Taiwan |
| 20105 | IA5 IRV International Alphabet No. 5 (7-bit) |
| 20106 | IA5 German (7-bit) |
| 20107 | IA5 Swedish (7-bit) |
| 20108 | IA5 Norwegian (7-bit) |
| 20127 | US-ASCII (7-bit) |
| 20261 | T.61 |
| 20269 | ISO 6937 Non-Spacing Accent |
| 20273 | IBM EBCDIC - Germany |
| 20277 | IBM EBCDIC - Denmark/Norway |
| 20278 | IBM EBCDIC - Finland/Sweden |
| 20280 | IBM EBCDIC - Italy |
| 20284 | IBM EBCDIC - Latin America/Spain |
| 20285 | IBM EBCDIC - United Kingdom |
| 20290 | IBM EBCDIC - Japanese Katakana Extended |
| 20297 | IBM EBCDIC - France |
| 20420 | IBM EBCDIC - Arabic |
| 20423 | IBM EBCDIC - Greek |
| 20424 | IBM EBCDIC - Hebrew |
| 20833 | IBM EBCDIC - Korean Extended |
| 20838 | IBM EBCDIC - Thai |
| 20866 | Russian - KOI8-R |
| 20871 | IBM EBCDIC - Icelandic |
| 20880 | IBM EBCDIC - Cyrillic (Russian) |
| 20905 | IBM EBCDIC - Turkish |
| 20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol) |
| 20932 | JIS X 0208-1990 & 0121-1990 |
| 20936 | Simplified Chinese (GB2312) |
| 21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian) |
| 21027 | Extended Alpha Lowercase |
| 21866 | Ukrainian (KOI8-U) |
| 28591 | ISO 8859-1 Latin I |
| 28592 | ISO 8859-2 Central Europe |
| 28593 | ISO 8859-3 Latin 3 |
| 28594 | ISO 8859-4 Baltic |
| 28595 | ISO 8859-5 Cyrillic |
| 28596 | ISO 8859-6 Arabic |
| 28597 | ISO 8859-7 Greek |
| 28598 | ISO 8859-8 Hebrew |
| 28599 | ISO 8859-9 Latin 5 |
| 28605 | ISO 8859-15 Latin 9 |
| 29001 | Europa 3 |
| 38598 | ISO 8859-8 Hebrew |
| 50220 | ISO 2022 Japanese with no halfwidth Katakana |
| 50221 | ISO 2022 Japanese with halfwidth Katakana |
| 50222 | ISO 2022 Japanese JIS X 0201-1989 |
| 50225 | ISO 2022 Korean |
| 50227 | ISO 2022 Simplified Chinese |
| 50229 | ISO 2022 Traditional Chinese |
| 50930 | Japanese (Katakana) Extended |
| 50931 | US/Canada and Japanese |
| 50933 | Korean Extended and Korean |
| 50935 | Simplified Chinese Extended and Simplified Chinese |
| 50936 | Simplified Chinese |
| 50937 | US/Canada and Traditional Chinese |
| 50939 | Japanese (Latin) Extended and Japanese |
| 51932 | EUC - Japanese |
| 51936 | EUC - Simplified Chinese |
| 51949 | EUC - Korean |
| 51950 | EUC - Traditional Chinese |
| 52936 | HZ-GB2312 Simplified Chinese |
| 54936 | Windows XP: GB18030 Simplified Chinese (4 Byte) |
| 57002 | ISCII Devanagari |
| 57003 | ISCII Bengali |
| 57004 | ISCII Tamil |
| 57005 | ISCII Telugu |
| 57006 | ISCII Assamese |
| 57007 | ISCII Oriya |
| 57008 | ISCII Kannada |
| 57009 | ISCII Malayalam |
| 57010 | ISCII Gujarati |
| 57011 | ISCII Punjabi |
| 65000 | Unicode UTF-7 |
| 65001 | Unicode UTF-8 |

 The following is a list of valid code page identifiers for Mac OS only:

|  |  |
| --- | --- |
| Identifier | Name |
| 1 | ASCII |
| 2 | NEXTSTEP |
| 3 | JapaneseEUC |
| 4 | UTF8 |
| 5 | ISOLatin1 |
| 6 | Symbol |
| 7 | NonLossyASCII |
| 8 | ShiftJIS |
| 9 | ISOLatin2 |
| 10 | Unicode |
| 11 | WindowsCP1251 |
| 12 | WindowsCP1252 |
| 13 | WindowsCP1253 |
| 14 | WindowsCP1254 |
| 15 | WindowsCP1250 |
| 21 | ISO2022JP |
| 30 | MacOSRoman |
| 10 | UTF16String |
| 0x90000100 | UTF16BigEndian |
| 0x94000100 | UTF16LittleEndian |
| 0x8c000100 | UTF32String |
| 0x98000100 | UTF32BigEndian |
| 0x9c000100 | UTF32LittleEndian |
| 65536 | Proprietary |

**LicenseInfo**: Information about the current license.When queried, this setting will return a string containing information about the license this instance of a struct is using. It will return the following information:

- Product: The product the license is for.
- Product Key: The key the license was generated from.
- License Source: Where the license was found (e.g., RuntimeLicense, License File).
- License Type: The type of license installed (e.g., Royalty Free, Single Server).
- Last Valid Build: The last valid build number for which the license will work.

**MaskSensitiveData**: Whether sensitive data is masked in log messages.In certain circumstances it may be beneficial to mask sensitive data, like passwords, in log messages. Set this to *true* to mask sensitive data. The default is *true*.

**UseInternalSecurityAPI**: Whether or not to use the system security libraries or an internal implementation. When set to *false*, the struct will use the system security libraries by default to perform cryptographic functions where applicable.

Setting this configuration setting to *true* tells the struct to use the internal implementation instead of using the system security libraries.

 On Windows, this setting is set to *false* by default. On Linux/macOS, this setting is set to *true* by default.

 To use the system security libraries for Linux, OpenSSL support must be enabled. For more information on how to enable OpenSSL, please refer to the [OpenSSL Notes](platforms.md) section.

# Trappable Errors ([Zstd](#struct-ipworkszipzstd) Struct)

 Note that the streams returned by get_compression_stream and get_decompression_stream will throw standard IOExceptions in case of error.

### ZipStream Errors

|  |  |
| --- | --- |
| 101 | The data is of an invalid or unsupported format. |
| 111 | Can't open file for read. |
| 150 | An I/O error has occurred (details follow). |
