Module ringo/encoding
Low-level support for character encoding and decoding. It uses the packages java.nio and java.nio.charset for the underlying operations.
Example
const enc = new Encoder('utf-8');
enc.encode('I \u2665 JS').encode('I \u2665 JS');
const bs = enc.toByteString();
// prints 'I ♥ JSI ♥ JS'
console.log(bs.decodeToString('utf-8'));
const dec = new Decoder('ISO-8859-1');
const ba = new ByteArray([246, 228, 252]);
// prints öäü
console.log(dec.decode(ba));
Class Decoder
Instance Methods
- clear()
- close()
- decode(bytes, start, end)
- hasPendingInput()
- read()
- readFrom(source)
- readLine(includeNewline)
- toString()
Instance Properties
Class Encoder
Instance Methods
- clear()
- close()
- encode(string, start, end)
- toByteArray()
- toByteString()
- toString()
- writeTo(sink)
Instance Properties
Decoder (charset, strict, capacity)
Creates a new Decoder to transform a ByteString or ByteArray to a string.
Example
// throws an Error: MALFORMED[1]
const dec = new Decoder('ASCII', true);
dec.decode(new ByteArray([246, 228, 252, 999999]));
// replaces 999999 with a substitutions character ���
const dec = new Decoder('ASCII');
dec.decode(new ByteArray([246, 228, 252, 999999]));
Parameters
| String | charset | the charset name |
| Boolean | strict | if true, unmappable characters stop the decoder and throw an exception, otherwise malformed input is replaced with a substitution character |
| Number | capacity | initial capacity for the input byte buffer and output character buffer. The output buffer's size depends on the average bytes used per character by the charset. |
Decoder.prototype. clear ()
Clears the character buffer.
Example
dec.decode(someByteArray);
dec.toString(); // returns the decoded string
dec.clear();
dec.toString(); // returns ''
Decoder.prototype. close ()
Closes the decoder for further input. A closed decoder throws a java.nio.BufferOverflowException
if decode() is called again.
Returns
| Decoder | the decoder |
Decoder.prototype. decode (bytes, start, end)
Decode bytes from the given buffer.
Parameters
| binary.Binary | bytes | a ByteString or ByteArray |
| Number | start | The start index, or 0 if undefined |
| Number | end | the end index, or bytes.length if undefined |
Decoder.prototype. hasPendingInput ()
Checks if all bytes are already decoded or if there is pending input.
Returns
| Boolean | true if there not all bytes are decoded, false otherwise |
Decoder.prototype. length
The character buffer's length which uses the Java primitive char internally.
Each character in the buffer is a 16-bit Unicode character.
Example
// an emoji in 4 raw bytes
const ba = new ByteArray([0xF0,0x9F,0x98,0x98]);
// a UTF-8 based decoder
const dec = new Decoder("UTF-8");
// prints 😘
console.log(dec.decode(ba));
// prints "2 chars vs. 4 bytes"
console.log(dec.length + " chars vs. " + ba.length + " bytes");
Decoder.prototype. read ()
Reads the whole stream and returns it as a string. This method is only useful if the decoder has a connected stream.
Returns
| String | the decoded string |
See
Decoder.prototype. readFrom (source)
Sets the source stream to read from. Using io streams is an alternative to reading from plain binary ByteArray or ByteString objects.
Example
const stream = new MemoryStream();
stream.write(...); // write some bytes into the stream
stream.position = 0; // reset the pointer
const dec = new Decoder('ASCII');
dec.readFrom(stream); // connect the stream with the decoder
dec.read(); // returns the stream's content as string
Parameters
| io.Stream | source | the source stream |
See
Decoder.prototype. readLine (includeNewline)
Reads a stream line by line and returns it as a string. This method is only useful if the decoder has a connected stream.
Parameters
| Boolean | includeNewline | if true, the newline character is included in the result, otherwise not |
Returns
| String | the decoded string or null if stream is empty |
See
Encoder (charset, strict, capacity)
Creates a new Encoder to transform string into a binary ByteString or ByteArray.
Parameters
| String | charset | the charset name |
| Boolean | strict | if true, unmappable characters stop the decoder and throw an exception, otherwise malformed input is replaced with a substitution character |
| Number | capacity | initial capacity for the input character buffer and output byte buffer. The binary buffer's size depends on the average bytes used per character by the charset. |
Encoder.prototype. encode (string, start, end)
Encodes the given string into the encoder's binary buffer.
Example
// this will only encode 'e' and 'f'
enc.encode("abcdef", 4, 6);
Parameters
| String | string | the string to encode |
| Number | start | optional index of the first character to encode |
| Number | end | optional index of the character after the last character to encode |
Encoder.prototype. length
The underlying byte buffer's length.
Encoder.prototype. toByteArray ()
Converts the encoded bytes into a ByteArray.
Returns
| ByteArray | the resulting ByteArray |
Encoder.prototype. toByteString ()
Converts the encoded bytes into a ByteString.
Returns
| ByteString | the resulting ByteString |
Encoder.prototype. toString ()
Encoder.prototype. writeTo (sink)
Sets the output stream to write into. Using io streams as destination is an alternative to writing into plain binary ByteArray or ByteString objects.
Parameters
| Stream | sink | the destination stream |