經過一番挖掘,我發現this gist在線哪種做我想做的,除了它期望實體爲十進制值。我把它清理了一下(略微不尋常的代碼風格原始),並修改爲處理十六進制值。
// encode(decode) html text into html entity (assuming entity is hex)
var HtmlEntity = {
decode : function(str) {
return str.replace(/&#x([0-9A-F]+);/gi, function(match, dec) {
return String.fromCharCode(parseInt(dec, 16));
});
},
encode : function(str) {
var buf = [];
for (var i = 0, length = str.length; i < length; i++) {
buf.push("&#x" + str[i].charCodeAt().toString(16) + ";");
}
return buf.join("");
}
};
var entity = '高级程序设计';
var str = '高級程序設計';
console.log(HtmlEntity.decode(entity) === str); // true
console.log(HtmlEntity.encode(str) === entity); // true
這可以很容易地修改,以處理十六進制和十進制的實體,而是我的使用情況是非常有限的,所以我選擇不。
這裏是一個小提琴,顯示預期的結果:http://jsfiddle.net/ohfuffm9/4/
這是有用的信息,謝謝。經過一番挖掘,我把一個工作解決方案放在一起。看到我的答案。我贊成讓我走上正確的道路 – WickyNilliams 2014-09-11 11:37:20