Javascript: Unicode-String zu Hex
Ich versuche zu konvertieren unicode-Zeichenfolge in eine hexadezimale Darstellung in javascript.
Dies ist, was ich habe:
function convertFromHex(hex) {
var hex = hex.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
function convertToHex(str) {
var hex = '';
for(var i=0;i<str.length;i++) {
hex += ''+str.charCodeAt(i).toString(16);
}
return hex;
}
Aber wenn nicht auf unicode-Zeichen, wie chinesische;
Eingang:
漢字
Ausgabe:
ªo"[W
Irgendwelche Ideen? Geht das in javascript?
InformationsquelleAutor der Frage Wesley | 2014-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken Sie daran, dass ein JavaScript-code-Einheit ist 16 bit breit. Also der hex-string form werden 4 Ziffern pro code-Einheit.
Verwendung:
String zu hex-form:
Wieder zurück:
InformationsquelleAutor der Antwort McDowell
Es hängt davon ab, welche Kodierung Sie verwenden. Wenn Sie konvertieren von utf-8-codierten hex-Zeichenfolge, verwenden Sie diese:
Für die andere Richtung verwenden:
InformationsquelleAutor der Antwort Pavel Gatnar
Diese sind JavaScript Unicode-escape-Sequenzen z.B.
\u12AB
. Sie zu bekehren, Sie könnte Iteration über jeder code-Einheit, die in der Zeichenfolge, Aufruf.toString(16)
auf Sie, und gehen von dort aus.Jedoch ist es effizienter, auch hexadezimale escape-Sequenzen z.B.
\xAA
in der Ausgabe, wo immer möglich.Beachten Sie auch, dass ASCII-Symbole wie
A
,b
, und-
wahrscheinlich nicht brauchen, um zu entkommen.Ich geschrieben habe eine kleine JavaScript-Bibliothek, die nicht alle dies für Sie, genannt . Es hat eine Menge von Optionen zur Steuerung der Ausgabe.
jsesc
Hier eine online-demo des Tools in Aktion: http://mothereff.in/js-escapes#1%E6%BC%A2%E5%AD%97
Ihre Frage war tagged as
utf-8
. Lesen Sie den rest Ihrer Frage, UTF-8 encoding/decoding nicht zu sein scheinen, was Sie hier wollte, aber falls Sie jemals brauchen es: verwenden Sieutf8.js
(online-demo).InformationsquelleAutor der Antwort Mathias Bynens
Hier ist ein tweak von McDowell ' s Algorithmus, nicht-pad-das Ergebnis:
InformationsquelleAutor der Antwort redgeoff