Encode Decode
A Javascript object to encode and/or decode html characters using HTML or
Numeric entities that handles double or partial encoding.
This is an npm published version of Robert Reid's
original - full credit to Robert.
Example
Modified from the original
documentation
var Encoder = require('encode-decode');
Encoder.EncodeType = "numerical";
Encoder.EncodeType = "entity";
var encoded = Encoder.htmlEncode(document.getElementById('input'));
var dblEncoded = Encoder.htmlEncode(document.getElementById('input'),true);
var decoded = Encoder.htmlDecode(encoded);
var containsEncoded = Encoder.hasEncoded(decoded);
Usage
Taken from the original
documentation
There are a number of useful functions within the object which I will outline
here:
HTML2Numerical
: Converts HTML entities to their numerical equivalents.NumericalToHTML
: Converts numerical entities to their HTML
equivalents.numEncode
: Numerically encodes unicode characters.htmlDecode
: Decodes HTML encoded text to its original state.htmlEncode
: Encodes HTML to either numerical or HTML entities. This is
determined by the EncodeType property.XSSEncode
: Encodes the basic characters used in XSS attacks to malform
HTML.correctEncoding
: Corrects any double encoded ampersands.stripUnicode
: Removes all unicode characters.hasEncoded
: Returns true if a string contains html encoded entities
within it.
Motivation
Taken from the original
documentation
One of the things that I have found strange about Javascript is its lack of
inbuilt functions to handle HTML encoding and decoding. Most server side
languages have this functionality built into them but Javascript has escape,
encodeURIComponent, encodeURI, unescape, decodeURIComponent and decodeURI
functions which are aimed at making strings portable and for encoding URIs and
URI parameters but there is no function for HTML encoding.
Now you may think well there's not much demand for a Javascript HTMLEncode
and HTMLDecode function as any textual content that needs encoding should be
done server-side before the HTML page is rendered and I would have agreed with
you not long ago. However I have started working more and more with AJAX and
especially RSS feeds and other client side delivered content such as Googles
AJAX APIs and I have found more and more the need to reformat content
delivered from external sources especially by HTML encoding or decoding
content client side using Javascript.
For more details about reformating content with Javascript and the problems
associated with simple replace statements you can read my related blog
article.
License
Dual GPL v2 or MIT licence.