69 lines
2.0 KiB
Markdown
69 lines
2.0 KiB
Markdown
# 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.
|