chardet/README.md

108 lines
2.1 KiB
Markdown
Raw Normal View History

2021-04-28 02:25:19 +00:00
# chardet
2023-03-08 22:38:03 +00:00
*Chardet* is a character detection module written in pure JavaScript (TypeScript). Module uses occurrence analysis to determine the most probable encoding.
2020-09-25 11:27:49 +00:00
- Packed size is only **22 KB**
- Works in all environments: Node / Browser / Native
- Works on all platforms: Linux / Mac / Windows
- No dependencies
- No native code / bindings
2023-03-08 22:38:03 +00:00
- 100% written in TypeScript
2020-09-25 11:27:49 +00:00
- Extensive code coverage
2013-04-30 13:57:19 +00:00
## Installation
2013-11-15 05:08:09 +00:00
```
npm i chardet
```
2013-04-30 13:57:19 +00:00
## Usage
To return the encoding with the highest confidence:
2013-11-15 05:08:09 +00:00
```javascript
2022-09-30 07:04:00 +00:00
import chardet from 'chardet';
2022-09-30 07:04:00 +00:00
const encoding = chardet.detect(Buffer.from('hello there!'));
2013-11-15 05:08:09 +00:00
// or
2022-09-30 07:04:00 +00:00
const encoding = await chardet.detectFile('/path/to/file');
2013-11-15 05:08:09 +00:00
// or
2022-09-30 07:04:00 +00:00
const encoding = chardet.detectFileSync('/path/to/file');
2013-11-15 05:08:09 +00:00
```
To return the full list of possible encodings use `analyse` method.
```javascript
2022-09-30 07:04:00 +00:00
import chardet from 'chardet';
chardet.analyse(Buffer.from('hello there!'));
```
2022-10-07 08:23:13 +00:00
Returned value is an array of objects sorted by confidence value in descending order
```javascript
[
{ confidence: 90, name: 'UTF-8' },
{ confidence: 20, name: 'windows-1252', lang: 'fr' }
];
```
2017-10-16 00:46:01 +00:00
## Working with large data sets
2022-10-07 08:23:13 +00:00
Sometimes, when data set is huge and you want to optimize performance (with a tradeoff of less accuracy),
you can sample only the first N bytes of the buffer:
2017-10-16 00:46:01 +00:00
```javascript
chardet
.detectFile('/path/to/file', { sampleSize: 32 })
.then(encoding => console.log(encoding));
2017-10-16 00:46:01 +00:00
```
2022-10-07 08:23:13 +00:00
You can also specify where to begin reading from in the buffer:
```javascript
chardet
.detectFile('/path/to/file', { sampleSize: 32, offset: 128 })
.then(encoding => console.log(encoding));
```
2013-04-30 13:57:19 +00:00
## Supported Encodings:
- UTF-8
- UTF-16 LE
- UTF-16 BE
- UTF-32 LE
- UTF-32 BE
- ISO-2022-JP
- ISO-2022-KR
- ISO-2022-CN
- Shift_JIS
- Big5
- EUC-JP
- EUC-KR
- GB18030
- ISO-8859-1
- ISO-8859-2
- ISO-8859-5
- ISO-8859-6
- ISO-8859-7
- ISO-8859-8
- ISO-8859-9
- windows-1250
- windows-1251
- windows-1252
- windows-1253
- windows-1254
- windows-1255
- windows-1256
- KOI8-R
Currently only these encodings are supported.
2023-03-08 22:38:03 +00:00
## TypeScript?
Yes. Type definitions are included.
2020-09-25 11:27:49 +00:00
### References
- ICU project http://site.icu-project.org/