Skip to content

Instantly share code, notes, and snippets.

@CatTail
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
@xorgy
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.

@wrathyz
Copy link

wrathyz commented Jan 25, 2018

Thank you

@gkilmain
Copy link

gkilmain commented Feb 8, 2018

Thank you for nice one

@lfg6000
Copy link

lfg6000 commented Jul 11, 2019

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

@tolluset
Copy link

tolluset commented Jun 3, 2020

Thanks!

@kachar
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('')
}

@yangtaeho
Copy link

simple and useful

@ippezshelby
Copy link

ippezshelby commented Aug 14, 2024

How about &quot;, it doesn't decode it to "

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