UTF-8 Encoder/Decoder for JavaScript

3.0.0 · maintenance · verified Sun Apr 19

The `utf8.js` package, currently at its stable version 3.0.0 (last updated in late 2017), provides a comprehensively tested and robust JavaScript implementation for encoding and decoding UTF-8 strings. It distinguishes itself by strictly adhering to the Encoding Standard, ensuring precise handling of all scalar Unicode code point values. A core aspect of its design is strict error handling: the library explicitly throws an `Error` when attempting to encode non-scalar values (such as lone surrogates) or when encountering malformed UTF-8 data during decoding. This approach prioritizes data integrity over silent error correction. For developers requiring the ability to encode or decode non-scalar values, the related `WTF-8` library is recommended. Given its foundational utility and mature status, the project is considered to be in maintenance mode, receiving updates primarily for critical issues rather than frequent feature additions.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to encode and decode UTF-8 strings, including those with multi-byte Unicode characters, and how to check the library's version.

const utf8 = require('utf8');

// Example 1: Encoding a basic string
const originalString1 = 'Hello, world! 👋';
const encodedString1 = utf8.encode(originalString1);
console.log(`Original: '${originalString1}'`);
console.log(`Encoded:  '${encodedString1}'`);
const decodedString1 = utf8.decode(encodedString1);
console.log(`Decoded:  '${decodedString1}'`);

// Example 2: Encoding a string with a multi-byte Unicode character
// U+1F60A SMILING FACE WITH SMILING EYES
const originalString2 = 'Smiling face: \uD83D\uDE0A'; 
const encodedString2 = utf8.encode(originalString2);
console.log(`\nOriginal: '${originalString2}'`);
console.log(`Encoded:  '${encodedString2}'`);
const decodedString2 = utf8.decode(encodedString2);
console.log(`Decoded:  '${decodedString2}'`);

// Example 3: Demonstrate version access
console.log(`\nutf8.js version: ${utf8.version}`);

view raw JSON →