值 &# 到 Unicode 转换

Value &# to unicode convert

本文关键字:Unicode 转换 amp      更新时间:2023-09-26

我有很多¶形式的字符,我想在我的文本编辑器中显示为 unicode 字符。这应该转换它们:

var newtext = doctext.replace(
    /&#('d+);/g, 
    String.fromCharCode(parseInt("$1", 10))
);

但似乎不起作用。正则表达式/&#('d+);/让我得到数字 - 但String.fromCharCode似乎没有给出我想要的结果。怎么了?

替换部分应该是匿名函数而不是表达式:

var newtext = doctext.replace(
    /&#('d+);/g, 
    function($0, $1) {
        return String.fromCharCode(parseInt($1, 10));
    }
);

如果您使用完整的 HTML(即不控制输入是什么),则替换方法并非万无一失。例如,如果您的实体都是十进制的,Jack 提交的方法(显然也是原始帖子中的想法)效果很好,但不适用于十六进制A,对于像 " 这样的命名实体就更少了。

为此,您可以执行另一个技巧:创建一个元素,将其内部HTML设置为源,然后读出其文本值。基本上,浏览器知道如何处理实体,因此我们委托。:)在jQuery中,这很容易:

$('<div/>').html('&amp;').text()
// => "&"

使用普通JS,它会变得更加冗长:

var el = document.createElement();
el.innerHTML = '&amp;';
el.textContent
// => "&"