https://github.com/mathiasbynens/wtf-8
A well-tested WTF-8 encoder/decoder written in JavaScript.
https://github.com/mathiasbynens/wtf-8
Last synced: 6 months ago
JSON representation
A well-tested WTF-8 encoder/decoder written in JavaScript.
- Host: GitHub
- URL: https://github.com/mathiasbynens/wtf-8
- Owner: mathiasbynens
- License: mit
- Created: 2014-10-03T08:55:25.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-02-19T10:58:33.000Z (over 8 years ago)
- Last Synced: 2024-12-15T09:28:26.930Z (6 months ago)
- Language: JavaScript
- Homepage: https://mths.be/wtf8
- Size: 11.7 KB
- Stars: 37
- Watchers: 5
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT.txt
Awesome Lists containing this project
README
# wtf-8 [](https://travis-ci.org/mathiasbynens/wtf-8) [](https://gemnasium.com/mathiasbynens/wtf-8)
_wtf-8_ is a well-tested [WTF-8](https://simonsapin.github.io/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.](https://mothereff.in/wtf-8)
Feel free to fork if you see possible improvements!
## Installation
Via [npm](https://www.npmjs.com/):
```bash
npm install wtf-8
```Via [Bower](http://bower.io/):
```bash
bower install wtf-8
```Via [Component](https://github.com/component/component):
```bash
component install mathiasbynens/wtf-8
```In a browser:
```html
```
In [Narwhal](http://narwhaljs.org/), [Node.js](https://nodejs.org/), and [RingoJS ≥ v0.8.0](http://ringojs.org/):
```js
var wtf8 = require('wtf-8');
```In [Rhino](http://www.mozilla.org/rhino/):
```js
load('wtf-8.js');
```Using an AMD loader like [RequireJS](http://requirejs.org/):
```js
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.
```js
// 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.
```js
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
| [](https://twitter.com/mathias "Follow @mathias on Twitter") |
|---|
| [Mathias Bynens](https://mathiasbynens.be/) |## License
_wtf-8_ is available under the [MIT](https://mths.be/mit) license.