A well-tested WTF-8 encoder/decoder written in JavaScript.
JavaScript Python HTML
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
tests
.editorconfig
.gitattributes
.gitignore
.travis.yml
Gruntfile.js
LICENSE-MIT.txt
README.md
bower.json
component.json
package.json
wtf-8.js

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.