我在将字符串字符的十六进制值转换为正常测试值时遇到困难。例如,'
的十六进制值是'
,即单引号。
可以在此链接上找到另一个十六进制字符值:http://character-code.com/。
有人可以告诉我是否存在这样做的javascript方法,或者我是否应该为此目的使用某些外部javascript库插件?
我已经尝试过使用URIencode
和URIencodecomponent
,但是没有运气
您可以使用主机提供的解析器将实体插入到元素中,然后获取textContent(或在受支持的情况下返回innerText):
var el = document.createElement('span');
el.innerHTML = ''';
console.log('' is a ' + (el.textContent || el.innerText)); // ' is a '
当然,对于浏览器不支持的实体不起作用。
将以上内容转换为功能:
var entityToText = (function() {
// Create a single span to parse the entity
var span = document.createElement('span');
// Choose textContent or innerText depending on support
var theText = typeof span.textContent == 'string'? 'textContent' : 'innerText';
// Return the actual function
return function(entity) {
span.innerHTML = entity;
return span[theText];
}
}());
您可以使用String.fromCharCode
-但首先需要将十六进制值(以16为底)转换为整数(以10为底)。这是您的操作方式:
var encoded = "'";
var REG_HEX = /&#x([a-fA-F0-9]+);/g;
var decoded = encoded.replace(REG_HEX, function(match, group1){
var num = parseInt(group1, 16); //=> 39
return String.fromCharCode(num); //=> '
});
console.log(decoded); //=> "'"
要将小数转换回十六进制,您可以这样做:
decoded.toString(16); //=> 27