点134069给出的Unicode字符,具有HTML转义𠮵。
是否有(最好是原生的)方法从Javascript获得字符实体的HTML转义?
发布于 2016-04-01 23:01:42
您可以获得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实例
发布于 2016-04-01 23:26:51
下面是一个函数,它将所有非ASCII7 7字符以及<、>、&转换为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] )确保得到了正确的块。
https://stackoverflow.com/questions/36366876
复制相似问题