HTML 转义 javascript 中的字符实体有原生方法吗?

Is there a native way to HTML escape character entities in javascript?

由点 134069 给出的 Unicode 字符 </code>,具有 HTML 转义 <code>&#x20BB5;

是否有(最好是本机的)方法从 Javascript 中获取字符实体的 HTML 转义?

您可以像这样获取字符的点值和十六进制值:

var codePoint = ''.codePointAt(0); //codePoint = 134069
var hexValue = ''.codePointAt(0).toString(16); //hexValue = 20bb5
var htmlEscape = '&#x' + hexValue + ';'; //htmlEscape = &#x20bb5;

这是一个工作示例:

$('#doIt').click(function() {
  $('#outputHex').html($('#inputText').val().codePointAt(0).toString(16));
  $('#outputString').html('&amp;#x' + $('#inputText').val().codePointAt(0).toString(16) + ';');
  $('#outputChar').html('&#x' + $('#inputText').val().codePointAt(0).toString(16) + ';');
});
code {
  display: block;
  padding: 4px;
  background-color: #EFEFEF;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="inputText"></textarea>
<button id="doIt">do it</button>

<h3>result</h3>
<code id="outputHex"></code>
<code id="outputString"></code>
<code id="outputChar"></code>

还有一点,codePointAt 是一个 ES6 函数,在旧版浏览器中不受支持。如果浏览器在此处阻止来自 运行 的代码:JSFiddle Example

这是一个将所有非ASCII7字符和<>&转换为HTML实体的函数:

function htmlEntities(s) {
    return Array.from(s).map(function (c) {
        return c.codePointAt(0) < 128 && '<&>'.indexOf(c) == -1 
            ? c 
            : '&#x' + c.codePointAt(0).toString(16) + ';';
    }).join('');
}

var s = 'This is \u{20BB5}, a special character & encoded in HTML.';
document.body.innerHTML = htmlEntities(s);

请注意,在 Javascript 字符串中,扩展的 unicode 字符被计为两个字符(例如在 length 中)。 ES6 构造如 Array.from[...s] 确保你得到正确的块。