Skip to content
A well-tested WTF-8 encoder/decoder written in JavaScript.
JavaScript Python HTML
Branch: master
Clone or download
Latest commit 58c6b97 Feb 19, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
tests Initial commit Oct 3, 2014
.editorconfig Initial commit Oct 3, 2014
.gitattributes Initial commit Oct 3, 2014
.gitignore Initial commit Oct 3, 2014
.travis.yml Fix URLs in `package.json` Jan 31, 2017
Gruntfile.js Minor tweaks Jan 30, 2017
LICENSE-MIT.txt Initial commit Oct 3, 2014
README.md Minor tweaks Jan 30, 2017
bower.json Release v1.0.1 Feb 19, 2017
component.json Release v1.0.1 Feb 19, 2017
package.json Release v1.0.1 Feb 19, 2017
wtf-8.js Release v1.0.1 Feb 19, 2017

README.md

wtf-8 Build status Dependency status

wtf-8 is a well-tested WTF-8 encoder/decoder written in JavaScript. WTF-8 is a superset of UTF-8: it can encode/decode any given Unicode code point, including those of (unpaired) surrogates. Here’s an online demo.

Feel free to fork if you see possible improvements!

Installation

Via npm:

npm install wtf-8

Via Bower:

bower install wtf-8

Via Component:

component install mathiasbynens/wtf-8

In a browser:

<script src="wtf-8.js"></script>

In Narwhal, Node.js, and RingoJS ≥ v0.8.0:

var wtf8 = require('wtf-8');

In Rhino:

load('wtf-8.js');

Using an AMD loader like RequireJS:

require(
  {
    'paths': {
      'wtf-8': 'path/to/wtf-8'
    }
  },
  ['wtf-8'],
  function(wtf8) {
    console.log(wtf8);
  }
);

API

wtf8.encode(string)

Encodes any given JavaScript string (string) as WTF-8, and returns the WTF-8-encoded version of the string.

// U+00A9 COPYRIGHT SIGN; see http://codepoints.net/U+00A9
wtf8.encode('\xA9');
// → '\xC2\xA9'
// U+10001 LINEAR B SYLLABLE B038 E; see http://codepoints.net/U+10001
wtf8.encode('\uD800\uDC01');
// → '\xF0\x90\x80\x81'

wtf8.decode(byteString)

Decodes any given WTF-8-encoded string (byteString) as WTF-8, and returns the WTF-8-decoded version of the string. It throws an error when malformed WTF-8 is detected.

wtf8.decode('\xC2\xA9');
// → '\xA9'

wtf8.decode('\xF0\x90\x80\x81');
// → '\uD800\uDC01'
// → U+10001 LINEAR B SYLLABLE B038 E

wtf8.version

A string representing the semantic version number.

Support

wtf-8 has been tested in (at least) the latest versions of Chrome, Opera, Firefox, Safari, IE, Node.js, Narwhal, RingoJS, PhantomJS, and Rhino.

Author

twitter/mathias
Mathias Bynens

License

wtf-8 is available under the MIT license.

You can’t perform that action at this time.