| # encoding-sniffer [](https://github.com/fb55/encoding-sniffer/actions/workflows/nodejs-test.yml) |
|
|
| An implementation of the HTML encoding sniffer algo, with stream support. |
|
|
| This module wraps around [iconv-lite](https://github.com/ashtuchkin/iconv-lite) |
| to make decoding buffers and streams incredibly easy. |
|
|
| ## Features |
|
|
| - Support for streams |
| - Support for XML encoding types, including UTF-16 prefixes and |
| `<?xml encoding="...">` |
| - Allows decoding streams and buffers with a single function call |
| |
| ## Installation |
|
|
| ```bash |
| npm install encoding-sniffer |
| ``` |
|
|
| ## Usage |
|
|
| ```js |
| import { DecodeStream, getEncoding, decodeBuffer } from "encoding-sniffer"; |
| |
| /** |
| * All functions accept an optional options object. |
| * |
| * Available options are (with default values): |
| */ |
| const options = { |
| /** |
| * The maximum number of bytes to sniff. Defaults to `1024`. |
| */ |
| maxBytes: 1024, |
| /** |
| * The encoding specified by the user. If set, this will only be overridden |
| * by a Byte Order Mark (BOM). |
| */ |
| userEncoding: undefined, |
| /** |
| * The encoding specified by the transport layer. If set, this will only be |
| * overridden by a Byte Order Mark (BOM) or the user encoding. |
| */ |
| transportLayerEncodingLabel: undefined, |
| /** |
| * The default encoding to use, if no encoding can be detected. |
| * |
| * Defaults to `"windows-1252"`. |
| */ |
| defaultEncoding: "windows-1252", |
| }; |
| |
| // Use the `DecodeStream` transform stream to automatically decode |
| // the contents of a stream as they are read |
| const decodeStream = new DecodeStream(options); |
| |
| // Or, use the `getEncoding` function to detect the encoding of a buffer |
| const encoding = getEncoding(buffer, options); |
| |
| // Use the `decodeBuffer` function to decode the contents of a buffer |
| const decodedBuffer = decodeBuffer(buffer, options); |
| ``` |
|
|
| ## License |
|
|
| This project is licensed under the MIT License. See the [LICENSE](/LICENSE) file |
| for more information. |
|
|