经过一番挖掘,我发现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