点提供的Unicode字符
134069
具有HTML转义𠮵
是否有(最好是原生的)方法从Javascript中获取字符实体的HTML转义?
答案 0 :(得分:2)
您可以像这样获取char的点值和十六进制值:
var codePoint = ''.codePointAt(0); //codePoint = 134069
var hexValue = ''.codePointAt(0).toString(16); //hexValue = 20bb5
var htmlEscape = '&#x' + hexValue + ';'; //htmlEscape = 𠮵
这是一个有效的例子:
$('#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) + ';');
});
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
答案 1 :(得分:2)
这是一个将所有非ASCII7字符和>
,&
,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);
转换为HTML实体的函数:
length
&#13;
请注意,在Javascript字符串中,扩展的unicode字符计为两个字符(例如在Array.from
中)。像[...s]
,StreamReader
这样的ES6结构确保您获得正确的块。