2016-04-01 11 views

Antwort

1

können Sie erhalten die beide den Punkt und Hex-Werte der Zeichen wie folgt aus:

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

Hier ist ein funktionierendes Beispiel:

$('#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>

One mehr Sache, CodePointAt ist eine ES6-Funktion und wird in älteren Browsern nicht unterstützt. Falls der Browser blockiert den Code aus läuft hier: JSFiddle Example

+0

Dies ist eine gute Idee, aber ich glaube nicht, dass es für alle HTML-Entities funktioniert (d. H. Das '&' ist komplizierter)? – Startec

+0

Nein. Dies sollte für jedes Zeichen funktionieren. Es gibt Sonderzeichen, wie &, die Abkürzungen haben, d. H. &, aber das wird auch funktionieren. Ich werde meine Antwort mit einem JFiddle-Beispiel aktualisieren. – Gremash

2

Hier ist eine Funktion, die alle nicht-ASCII7 Zeichen umwandelt und <, >, & in HTML-Entitäten:

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);

Beachten Sie, dass erweiterte Unicode-Zeichen in JavaScript-Strings als zwei Zeichen gezählt werden (z. B. in length). Die ES6-Konstrukte wie Array.from, [...s] stellen sicher, dass Sie die richtigen Brocken bekommen.