Skip to content
A simple JavaScript library to manage UTF8 strings contained in ArrayBuffers
JavaScript
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src Clarified license; matched styles
tests
.gitignore
.npmignore
.travis.yml
LICENSE
README.md
bower.json
karma.conf.js Added coverage tests
package.json Updated dependencies

README.md

UTF8.js

A simple JavaScript library to encode/decode UTF8 strings.
Licensed under the MIT License.

NPM version Build status Dependency Status devDependency Status Coverage Status

 Encoding

A char:

UTF8.setBytesFromCharCode('é'.charCodeAt(0));
// [0xC3, 0xA9]

A string:

UTF8.setBytesFromString('1.3$ ~= 1€');
// [49, 46, 51, 36, 32, 126, 61, 32, 49, 226, 130, 172]

 Decoding

A char:

String.fromCharCode(UTF8.getCharCode([0xC3, 0xA9]);
// 'é'

A string:

UTF8.getStringFromBytes([49, 46, 51, 36, 32, 126, 61, 32, 49, 226, 130, 172]);
// '1.3$ ~= 1€'

TypedArrays are welcome

As inputs :

var bytes=new Uint8Array([0xC3, 0xA9, 49, 46, 51, 36, 32, 126, 61, 32, 49, 226, 130, 172]);

// The first char
String.fromCharCode(UTF8.getCharCode(bytes));
// é

// The following string at the offset 2
UTF8.getStringFromBytes(bytes,2);
// '1.3$ ~= 1€'

As well as outputs :

var bytes=new Uint8Array(14);

// First encoding a char
UTF8.setBytesFromCharCode('é'.charCodeAt(0));

// Then encoding a string
UTF8.setBytesFromString('1.3$ ~= 1€', 2);

UTF8 encoding detection

UTF8.isNotUTF8(bytes);
// true | false

This function can prove the text contained by the given bytes is not UTF-8 (or badly encoded UTF-8 string). It's not reciprocally true, especially for short strings with which false positives are frequent.

Strict mode

If you try to encode an UTF8 string in an ArrayBuffer too short to contain the complete string, it will silently fail. To avoid this behavior, use the strict mode :

UTF8.setBytesFromString('1.3$ ~= 1€', 2, null, true);

NodeJS

Also available on NPM :

npm install utf-8

Thanks

  • The Debian project for it's free (as freedom) russian/japanese man pages used for real world files tests !

Stats

NPM NPM

Something went wrong with that request. Please try again.