Easy base64 encode and decode of Unicode strings and Emojis.
npm install unicode-encode[![npm badge][2]][1]


In most browsers, calling btoa() on a Unicode string or Emojis will cause an InvalidCharacterError or DOMException exception.
This small package provides a simple solution by making available utoa and atou, Unicode to and from base64 encoding.
``shell`
npm i --save unicode-encode
`js
// Import the needed functions.
const { utoa, atou } = require("unicode-encode");
// Examples:
utoa("à bientôt ☮"); // w6AgYmllbnTDdHQg4piu
atou("w6AgYmllbnTDdHQg4piu"); // "à bientôt ☮"
utoa("👋 Unicode!"); // 8J+RiyBVbmljb2RlIQ==
atou("8J+RiyBVbmljb2RlIQ=="); // "👋 Unicode!"
`
`typescript
// Import with full type support
import { utoa, atou } from "unicode-encode";
// Functions are fully typed
const encoded: string = utoa("Hello 🌍");
const decoded: string = atou(encoded);
`
Encodes a Unicode string to base64.
- str: The Unicode string to encode
- Returns: Base64 encoded string
Decodes a base64 encoded string back to Unicode.
- base64: The base64 string to decode
- Returns: Decoded Unicode string
This project is written in TypeScript and requires Node.js 18+ for development.
`shellClone the repository
git clone https://github.com/Accelery/unicode-encode.git
cd unicode-encode
$3
-
npm run build - Compile TypeScript to JavaScript
- npm run clean - Remove compiled output
- npm run rebuild - Clean and build
- npm test - Run tests on compiled code
- npm run test:ts - Run tests directly on TypeScript files
- npm run test:watch - Run tests in watch mode
- npm run coverage - Generate test coverage report
- npm run lint - Check code formatting
- npm run lint:fix - Fix code formatting
- npm run typecheck - Check TypeScript types without emitting$3
This package uses automated publishing via GitHub Actions. To publish a new version:
1. Update the version in
package.json
2. Update the CHANGELOG.md` with your changes1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. Ensure all tests pass and code is properly formatted
6. Submit a pull request
MIT
[1]: https://npmjs.org/package/unicode-encode
[2]: https://nodei.co/npm/unicode-encode.png?compact=true