我在将字符串字符的十六进制值转换为正常测试值时遇到了困难
例如,'
的十六进制值为'
,即撇号。
可以在此链接上找到另一个十六进制字符值:http://character-code.com/。
有人可以告诉我是否存在这样做的javascript方法,还是应该为此目的使用一些外部javascript库插件?
我已尝试使用URIencode
和URIencodecomponent
,但没有运气
答案 0 :(得分:7)
您可以使用主机提供的解析器将实体插入元素中,然后返回 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];
}
}());
答案 1 :(得分:4)
我知道这很痛苦,但您可以使用String.fromCharCode
- 但您首先需要将十六进制值(基数16)转换为十进制值(基数为10)。以下是您将如何做到这一点:
var encoded = "'";
var REG_HEX = /&#x([a-fA-F0-9]+);/;
var hex = encoded.replace(REG_HEX, "$1"); //=> 27
var dec = parseInt(hex, 16); //=> 39
var char = String.fromCharCode(dec); //=> '
要将小数转换回十六进制,您可以这样做:
dec.toString(16); //=> 27