-
-
Save CatTail/4174511 to your computer and use it in GitHub Desktop.
// 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 |
Works well for encoding input from text fields straight into html using jQuery and this.
Thanks, this solved an annoying issue with .net localization.
I've written a little bit better implementation of decodeHtmlEntity that accept's html entities by name Gist
Thank you!
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
Thanks so much. I just used it.
Thanks a lot for this!
What if my string also has hexadecimal along with decimal values?
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.
Thank you
Thank you for nice one
Thank You. It was good of you to post it.
Thanks!
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('')
}
simple and useful
How about "
, it doesn't decode it to "
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.