首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中是否有HTML转义字符实体的本机方式?

问在javascript中是否有HTML转义字符实体的本机方式?
EN

Stack Overflow用户
提问于 2016-04-01 22:37:14
回答 2查看 237关注 0票数 2

点134069给出的Unicode字符,具有HTML转义𠮵。

是否有(最好是原生的)方法从Javascript获得字符实体的HTML转义?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-01 23:01:42

您可以获得char的点值和十六进制值,如下所示:

代码语言:javascript
复制
var codePoint = ''.codePointAt(0); //codePoint = 134069
var hexValue = ''.codePointAt(0).toString(16); //hexValue = 20bb5
var htmlEscape = '&#x' + hexValue + ';'; //htmlEscape = 𠮵

下面是一个有用的例子:

​

代码语言:javascript
复制
$('#doIt').click(function() {
  $('#outputHex').html($('#inputText').val().codePointAt(0).toString(16));
  $('#outputString').html('&#x' + $('#inputText').val().codePointAt(0).toString(16) + ';');
  $('#outputChar').html('&#x' + $('#inputText').val().codePointAt(0).toString(16) + ';');
});
代码语言:javascript
复制
code {
  display: block;
  padding: 4px;
  background-color: #EFEFEF;
}
代码语言:javascript
复制
<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实例

票数 2
EN

Stack Overflow用户

发布于 2016-04-01 23:26:51

下面是一个函数,它将所有非ASCII7 7字符以及<、>、&转换为HTML实体:

​

代码语言:javascript
复制
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] )确保得到了正确的块。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36366876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档