Skip to content

Instantly share code, notes, and snippets.

Created November 30, 2012 08:27
Show Gist options
  • Save CatTail/4174511 to your computer and use it in GitHub Desktop.
Save CatTail/4174511 to your computer and use it in GitHub Desktop.
Javascript: encode(decode) html text into html entity
// encode(decode) html text into html entity
var decodeHtmlEntity = function(str) {
return str.replace(/&#(\d+);/g, function(match, dec) {
return String.fromCharCode(dec);
var encodeHtmlEntity = function(str) {
var buf = [];
for (var i=str.length-1;i>=0;i--) {
buf.unshift(['&#', str[i].charCodeAt(), ';'].join(''));
return buf.join('');
var entity = '高级程序设计';
var str = '高级程序设计';
console.log(decodeHtmlEntity(entity) === str);
console.log(encodeHtmlEntity(str) === entity);
// output:
// true
// true
Copy link

cerkit commented Jul 7, 2015

xuebaofeng: Your solution does not work on a server using node.js, nor does it work on Pebble smartwatch. It only works in a browser. The solution provided works anywhere that JavaScript regular expressions are supported.

Great solution. Thanks. I've been trying to pull this off all morning.

Copy link

Works well for encoding input from text fields straight into html using jQuery and this.

Copy link

Thanks, this solved an annoying issue with .net localization.

Copy link

liamato commented Oct 29, 2015

I've written a little bit better implementation of decodeHtmlEntity that accept's html entities by name Gist

Copy link

Thank you!

Copy link

ghost commented Feb 12, 2016

with Unicode support (\uWXYZ):

function encodeHtmlEntity(str) {
  return str.replace(/[\u00A0-\u9999\<\>\&\'\"\\\/]/gim, function(c){
    return '&#' + c.charCodeAt(0) + ';' ;

or as bookmarklet (placed in your bookmark-toolbar to use whenever..)

javascript:(function(){prompt("output:",prompt("∞ to HTML-Entity:","<div>❝Likė A Ƀoŝš❞ ©®</div>").replace(/[\u00A0-\u9999\<\>\&\'\"\\\/]/gim,function(c){return '&#'+c.charCodeAt(0)+';'}));return true;}());

sorry about the watermark, I've took it from here

Copy link

cdaiga commented Jun 20, 2016

Thanks so much. I just used it.

Copy link

Hardhik commented Sep 16, 2016

Thanks a lot for this!
What if my string also has hexadecimal along with decimal values?

Copy link

xorgy commented Jan 12, 2017

function encodeHtmlEntity(str) {
  var buf = '';
  for (var i=0; i < str.length; i++) {
    buf += '&#'+ str.charCodeAt(i) + ';';
  return buf;

Don't construct an array just to join it with empty string.

Copy link

wrathyz commented Jan 25, 2018

Thank you

Copy link

gkilmain commented Feb 8, 2018

Thank you for nice one

Copy link

lfg6000 commented Jul 11, 2019

Thank You. It was good of you to post it.

Copy link

tolluset commented Jun 3, 2020


Copy link

kachar commented Jan 6, 2021

TypeScript version:

const decodeHtmlEntity = function (str: string) {
  return str.replace(/&#(\d+);/g, function (match: string, dec: number) {
    return String.fromCharCode(dec)

const encodeHtmlEntity = function (str: string) {
  const buf = []
  for (let i = str.length - 1; i >= 0; i--) {
    buf.unshift(['&#', str.charCodeAt(i), ';'].join(''))
  return buf.join('')

Copy link

simple and useful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment