utf-6i

1.2.0 • Public • Published

Utf-6i

encode small!

Usage

First of all, we'll import utf-6i:

npm install utf-6i
const UTF6I = require("utf-6i")

To encode a string of text, use <UTF6I>.encode(text):

const UTF6I = require("utf-6i")
let encoded = UTF6I.encode("Hello, World!")
console.log(encoded) //"ﲁ䰰ᅵϵ콈섿翿"

To decode a string, simply use <UTF6I>.decode(encoded):

const UTF6I = require("utf-6i")
let encoded = "ﲁ䰰ᅵϵ콈섿翿"
console.log( UTF6I.decode(encoded) ) //"Hello, World!"

Sometimes the mumble-jumble "ﲁ䰰ᅵϵ콈섿翿" isn't fitted for what you want to do. That's fine! There are 3 other input/output modes to choose from when encoding / decoding.

base64

const UTF6I = require("utf-6i")
UTF6I.mode = "base64" //"BASE", "64", "base", "true", "1", etc... all work also
 
let encoded = UTF6I.encode("Hello, World!")
console.log(encoded) //"/IFMMP/cA/XPSME/f/=="
 
let decoded = UTF6I.decode(encoded)
console.log(decoded) //"Hello, World!"

binary

const UTF6I = require("utf-6i")
UTF6I.mode = "bin" //All invalid modes will fallback to this
 
let encoded = UTF6I.encode("Hello, World!")
console.log(encoded) //"111111001000000101001100001100001111111111011100000000111111010111001111010010001100000100111111011111"
 
let decoded = UTF6I.decode(encoded)
console.log(decoded) //"Hello, World!"

UInt8Array

const UTF6I = require("utf-6i")
UTF6I.mode = "uint" //All invalid modes will fallback to this
 
let encoded = UTF6I.encode("Hello, World!")
console.log(encoded) //"UInt8Array [252, 129, 76, 48, 255, 220, 3, 245, 207, 72, 193, 63, 127, 255]"
 
let decoded = UTF6I.decode(encoded)
console.log(decoded) //"Hello, World!"

Compression

UTF-16 with regular english:
 [Most Common] [4KB] UTF-16 => [1.58KB] UTF-6i (60.4% compression rate)
UTF-16 JavaScript
[Quite Common] [4KB] UTF-16 => [1.89KB] UTF-6i (52.8% compression rate)
UTF-16 with unicode jumble:
  [Not Common] [4KB] UTF-16 => [5.24KB] UTF-6i (-31% compression rate)

Performance:

(on intel i5 8GB laptop, running on (new) Edge Browser ES11)

UTF-16: n/a       UTF-6i: 3.1ms/KB (1,000-1,000,000x slower)
  GZip: ~100ms/KB UTF-6i: 3.1ms/KB (30x faster)

Note: this project was not made to have the best compression rate or best performance. The goal was to have an overall low performance overhead while still offering 1. Decent compression and 2. fixed block size (always 6bit)

Package Sidebar

Install

npm i utf-6i

Weekly Downloads

1

Version

1.2.0

License

MIT

Unpacked Size

8.17 kB

Total Files

6

Last publish

Collaborators

  • blobkat