class Simple8BitZipEncoding extends java.lang.Object implements ZipEncoding
These restrictions most notably apply to the most prominent
omissions of java-1.4's Charset
implementation, Cp437 and Cp850.
The methods of this class are reentrant.
| Modifier and Type | Class and Description |
|---|---|
private static class |
Simple8BitZipEncoding.Simple8BitChar
A character entity, which is put to the reverse mapping table
of a simple encoding.
|
| Modifier and Type | Field and Description |
|---|---|
private char[] |
highChars
The characters for byte values of 128 to 255 stored as an array of
128 chars.
|
private java.util.List<Simple8BitZipEncoding.Simple8BitChar> |
reverseMapping
A list of
Simple8BitZipEncoding.Simple8BitChar objects sorted by the unicode
field. |
| Constructor and Description |
|---|
Simple8BitZipEncoding(char[] highChars) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canEncode(java.lang.String name)
Check, whether the given string may be losslessly encoded using this
encoding.
|
boolean |
canEncodeChar(char c) |
java.lang.String |
decode(byte[] data) |
char |
decodeByte(byte b)
Return the character code for a given encoded byte.
|
java.nio.ByteBuffer |
encode(java.lang.String name)
Encode a filename or a comment to a byte array suitable for
storing it to a serialized zip entry.
|
private Simple8BitZipEncoding.Simple8BitChar |
encodeHighChar(char c) |
boolean |
pushEncodedChar(java.nio.ByteBuffer bb,
char c)
Pushes the encoded form of the given character to the given byte buffer.
|
private final char[] highChars
private final java.util.List<Simple8BitZipEncoding.Simple8BitChar> reverseMapping
Simple8BitZipEncoding.Simple8BitChar objects sorted by the unicode
field. This list is used to binary search reverse mapping of
unicode characters with a character code greater than 127.public Simple8BitZipEncoding(char[] highChars)
highChars - The characters for byte values of 128 to 255
stored as an array of 128 chars.public char decodeByte(byte b)
b - The byte to decode.public boolean canEncodeChar(char c)
c - The character to encode.public boolean pushEncodedChar(java.nio.ByteBuffer bb,
char c)
bb - The byte buffer to write to.c - The character to encode.false is returned, nothing is pushed to the
byte buffer.private Simple8BitZipEncoding.Simple8BitChar encodeHighChar(char c)
c - A unicode character in the range from 0x0080 to 0x7f00null value is returned, if this character is not
covered by this encoding.public boolean canEncode(java.lang.String name)
ZipEncodingcanEncode in interface ZipEncodingname - A filename or ZIP comment.ZipEncoding.canEncode(java.lang.String)public java.nio.ByteBuffer encode(java.lang.String name)
ZipEncodingExamples for CP 437 (in pseudo-notation, right hand side is C-style notation):
encode("?_for_Dollar.txt") = "%U20AC_for_Dollar.txt"
encode("Ölfässer.txt") = "\231lf\204sser.txt"
encode in interface ZipEncodingname - A filename or ZIP comment.%Uxxxx. It is
assumed, that the byte buffer is positioned at the
beginning of the encoded result, the byte buffer has a
backing array and the limit of the byte buffer points
to the end of the encoded result.ZipEncoding.encode(java.lang.String)public java.lang.String decode(byte[] data)
throws java.io.IOException
decode in interface ZipEncodingdata - The byte values to decode.java.io.IOException - on errorZipEncoding.decode(byte[])