Introduction to iconv-lite
Iconv-lite is a pure JavaScript character encoding conversion library, renowned for its exceptional performance, underscore compatibility, and robust API. It seamlessly converts character encodings, delivering efficient solutions for diverse textual data operations in Node.js and browser environments.
Key APIs and Examples of iconv-lite
1. Installation
npm install iconv-lite
2. Basic Usage
Converting a string from one encoding to another:
const iconv = require('iconv-lite');
// Convert from UTF-8 to ISO-8859-1
let str = iconv.encode('Hello, world!', 'iso-8859-1');
console.log(str); // Buffer with ISO-8859-1 encoded content
// Convert back to UTF-8
let originalStr = iconv.decode(str, 'iso-8859-1');
console.log(originalStr); // 'Hello, world!'
3. Streaming Support
Reading and writing files with different encodings:
const fs = require('fs');
const iconv = require('iconv-lite');
// Create readable stream with 'windows-1251' encoding
let readable = fs.createReadStream('file.txt').pipe(iconv.decodeStream('windows-1251'));
// Create writable stream with 'utf-8' encoding
let writable = fs.createWriteStream('output.txt').pipe(iconv.encodeStream('utf-8'));
readable.pipe(writable);
4. Automatically Decode in Browser
Setting up iconv-lite in the browser:
// Include iconv-lite in the HTML file
<script src="node_modules/iconv-lite/lib/index.js"></script>
// JavaScript code
let encodedString = new Buffer("\xa5", 'binary');
let decodedString = iconv.decode(encodedString, 'win1251');
console.log(decodedString); // Outputs the correctly decoded string
5. Encode in Arrays
let arr = ['Hello', 'World'];
let encodedArr = arr.map(str => iconv.encode(str, 'ISO-8859-1'));
encodedArr.forEach(buf => console.log(iconv.decode(buf, 'ISO-8859-1')));
Comprehensive Application Example
Implementing an application that reads, processes, and writes various encoded files:
const fs = require('fs');
const iconv = require('iconv-lite');
function processFile(inputFile, inputEncoding, outputFile, outputEncoding) {
const readable = fs.createReadStream(inputFile).pipe(iconv.decodeStream(inputEncoding));
let data = '';
readable.on('data', chunk => {
data += chunk;
});
readable.on('end', () => {
const processedData = data.toUpperCase(); // Example operation on data
const writable = fs.createWriteStream(outputFile).pipe(iconv.encodeStream(outputEncoding));
writable.write(processedData);
writable.end();
});
}
processFile('input.txt', 'windows-1251', 'output.txt', 'utf-8');
With these examples and the robust API provided by iconv-lite, developers can adeptly handle character encoding conversions effortlessly across Node.js and browser environments.
Hash: 2e27a62bdab3ec83ed474cca1c77900f7a555d308efb5d20afe782bc1a9ca90c