2009-01-21 8 views
34

Ich bin nicht so vertraut mit Javascript und bin auf der Suche nach der Funktion, die den UNICODE-Wert eines Zeichens zurückgibt und den UNICODE-Wert zurückgibt, gibt die Zeichenfolge gleichwertig zurück. Ich bin mir sicher, dass es etwas Einfaches gibt, aber ich sehe es nicht.Was ist eine einfache Möglichkeit, Asc() und Chr() in JavaScript für Unicode-Werte aufzurufen?

Beispiel:

  • ASC ("A") = 65
  • CHR (65) = "A"
  • ASC ("ਔ") = 2580
  • CHR (2580) = "ਔ"
+3

Nun, wäre es nicht asc(), aber uni(). Ha ha, ich bin heute morgen in guter Form :-). – paxdiablo

Antwort

54

Werfen Sie einen Blick auf:

String.fromCharCode(64) 

und

String.charCodeAt(0) 

Der erste muss (wörtlich String.fromCharCode...) und wird wieder "@" (64) auf der String Klasse aufgerufen werden. Die zweite sollte auf einer String Instanz (zB "@@@".charCodeAt...) ausgeführt werden und gibt den Unicode-Code des ersten Zeichens zurück (die '0' ist eine Position innerhalb der Zeichenkette. Sie können die Codes für andere Zeichen in der Zeichenkette durch Ändern abrufen) das zu einer anderen Nummer).

Der Skript-Schnipsel:

document.write("Unicode for character ਔ is: " + "ਔ".charCodeAt(0) + "<br />"); 
document.write("Character 2580 is " + String.fromCharCode(2580) + "<br />"); 

gibt:

 
Unicode for character ਔ is: 2580 
Character 2580 is ਔ 
+0

Danke, das ist genau die Funktion, nach der ich gesucht habe! – Noah

4

Da JavaScript uses UCS-2 internally, String.fromCharCode(codePoint) nicht für die zusätzlichen Unicode-Zeichen arbeiten. Wenn codePoint ist 119558 (0x1D306, für das '' Zeichen), zum Beispiel.

Wenn Sie eine Zeichenfolge auf einem Codepunkt Nicht-BMP Unicode basiert erstellen möchten, können Sie Punycode.js ‚s Utility-Funktionen verwenden, um zwischen UCS-2-Strings und UTF-16-Codepunkte zu konvertieren:

// `String.fromCharCode` replacement that doesn’t make you enter the surrogate halves separately 
punycode.ucs2.encode([0x1d306]); // '' 
punycode.ucs2.encode([119558]); // '' 
punycode.ucs2.encode([97, 98, 99]); // 'abc' 

Wenn Sie den Unicode-Codepunkt für jedes Zeichen in einer Zeichenfolge abrufen möchten, müssen Sie die UCS-2-Zeichenfolge in ein Array von UTF-16-Codepunkten konvertieren (wobei jedes Ersatzpaar einen einzelnen Codepunkt bildet). Sie könnten Punycode.js ‚s Utility-Funktionen für diesen Einsatz:

punycode.ucs2.decode('abc'); // [97, 98, 99] 
punycode.ucs2.decode(''); // [119558] 
+0

Tatsächlich verwendet Javascript UTF-16-Codierung. Wenn Sie mehr als das BMP hineinlegen und es lesen, erhalten Sie genau das Gleiche, was Sie eingegeben haben. Obwohl Sie kein Textverarbeitungsprogramm darin schreiben werden. – Chad

+1

@Chad Hast du den Artikel gelesen, mit dem ich verlinkt bin? Ich denke nicht. –

+0

Ich habe Ihren Artikel gelesen, und es Browser abhängig. Also, wenn Sie UTF-16-Codierung in v8 Chrome JavaScript schieben, erhalten Sie genau den Unicode-Code heraus. Die Wiedergabe solcher Codepunkte ist eine andere Geschichte. – Chad

0

Beispiel zur Erzeugung von hier Alphabet Array:

const arr = []; 
for(var i = 0; i< 20; i++) { 
    arr.push(String.fromCharCode('A'.charCodeAt(0) + i)) 
} 
Verwandte Themen