如何将html实体的十六进制代码解码为javascript中的文本?

问题描述 投票:3回答:2

我在将字符串字符的十六进制值转换为正常测试值时遇到困难。例如,'的十六进制值是',即单引号。

可以在此链接上找到另一个十六进制字符值:http://character-code.com/

有人可以告诉我是否存在这样做的javascript方法,或者我是否应该为此目的使用某些外部javascript库插件?

我已经尝试过使用URIencodeURIencodecomponent,但是没有运气

javascript string text hex decode
2个回答
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];
  }
}());

4
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.