-
Star
(114)
You must be signed in to star a gist -
Fork
(37)
You must be signed in to fork a gist
-
-
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.