来自星星的码农 - 个人博客

来自星星的码农 - 个人博客

在 HTML 中,某些字符是预留的。 比如HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签。 如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用字符实体(character entities)。 在比如,你在HTML源码中想打一个空格,并在页面中显示这个空格。在源码中直接打空格是不会显示的。只能用实体字符 这个来表示。才能在网站中显示。

将正常字符转为字符实体

// 'hehe' => '&#x68;&#x65;&#x68;&#x65;'
function stringToEntity(str,radix){
    var arr = str.split('')
    radix = radix||0
    var tmp = ''
    for(var i=0;i<arr.length;i++){
        var item = arr[i]
        var str = '&#'+(radix?'x'+item.charCodeAt(0).toString(16):item.charCodeAt(0))+';'
        tmp += str
    }
    return tmp
}

将字符实体转为正常字符

// '&#x68;&#x65;&#x68;&#x65;' => 'hehe'
function entityToString(entity) {
    var entities = entity.split(';')
    entities.pop()
    var tmp = ''
    for (var i = 0; i < entities.length; i++) {
        var num = entities[i].trim().slice(2)
        if (num[0] === 'x')//10进制还是16进制
            num = parseInt(num.slice(1), 16);
        else num = parseInt(num);
        tmp += String.fromCharCode(num)
    }
    return tmp
}
  

使用

var str = 'hehe'
console.log(stringToEntity(str,1))