Convert character encodings in pure javascript.
npx @tessl/cli install tessl/npm-iconv-lite@0.7.0iconv-lite is a pure JavaScript character encoding conversion library that enables developers to convert text between different character encodings without requiring native code compilation. It offers both synchronous encode/decode APIs and streaming support for handling large data efficiently, supports a comprehensive range of encodings, and is designed for maximum portability and performance across Node.js, browsers, React Native, and sandboxed environments.
npm install iconv-liteconst iconv = require('iconv-lite');For ES modules:
import * as iconv from 'iconv-lite';const iconv = require('iconv-lite');
// Convert from an encoded buffer to a js string
const str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251');
// Convert from a js string to an encoded buffer
const buf = iconv.encode("Sample input string", 'win1251');
// Check if encoding is supported
const isSupported = iconv.encodingExists("us-ascii");iconv-lite is built around several key components:
encode() and decode() functions for simple conversionsencodeStream() and decodeStream()Synchronous character encoding conversion between strings and buffers. Essential for processing text data in different character encodings.
function encode(content, encoding, options);
function decode(buffer, encoding, options);
function encodingExists(encoding);Transform streams for encoding and decoding large amounts of data efficiently. Perfect for processing files or network streams.
function encodeStream(encoding, options);
function decodeStream(encoding, options);
function enableStreamingAPI(streamModule);Direct access to encoder and decoder instances for advanced use cases and custom stream implementations.
function getEncoder(encoding, options);
function getDecoder(encoding, options);
function getCodec(encoding);/**
* Options interface for encode/decode functions
*/
const Options = {
/** Strip BOM (Byte Order Mark) from decoded output (default: true for decode) */
stripBOM,
/** Add BOM to encoded output (default: false) */
addBOM,
/** Default encoding fallback */
defaultEncoding
};
/**
* Encoder stream interface
*/
const EncoderStream = {
write(str),
end()
};
/**
* Decoder stream interface
*/
const DecoderStream = {
write(buf),
end()
};/** Registry of all available encodings and aliases (lazy-loaded, initially null) */
const encodings;
/** Default character for Unicode encoding errors */
const defaultCharUnicode; // "�"
/** Default character for single-byte encoding errors */
const defaultCharSingleByte; // "?"
/** Boolean indicating if streaming API is currently enabled */
const supportsStreams;
/** Flag to suppress deprecation warnings for decode() with strings */
const skipDecodeWarning;
/** Internal cache of loaded codec instances */
const _codecDataCache;
/** BOM (Byte Order Mark) character constant */
const BOMChar; // "\uFEFF"iconv-lite supports a comprehensive range of character encodings: