Fügen Sie ein Unicode-Zeichen in JavaScript ein

133

Ich muss ein Omega (Ω) in meine HTML-Seite einfügen. Ich verwende dazu den HTML-Code, damit ich ΩΩ schreiben und erhalten kann. Das ist alles in Ordnung und gut, wenn ich es in ein HTML-Element einfüge. Wenn ich jedoch versuche, es in mein JS var Omega = Ωeinzufügen, analysiert es diesen Code als JS und das Ganze funktioniert nicht. Weiß jemand, wie man das macht?

Blaues Feuer
quelle
15
var Omega = "Ω";zu einfach?
Heretic Monkey
6
Notepad akzeptiert das nicht, es schreibt nur ein O: P
Bluefire
13
@MikeMcCaughan Ja, aber wenn ein anderer Entwickler die Codierung der Quelldatei durcheinander bringt, haben Sie verloren ... Sie werden immer jemanden haben, der sagt: "OOOOps, ich wusste nicht, dass <Platzhalter für Software> CP1250 als Standardcodierung verwendet und ich habe diese kleine Änderung beim Festschreiben von "oder" Zeichen-Enco-Was "nicht bemerkt? ; =)
Samuel Rossille
3
@Bluefire Wechseln Sie zu einem besseren Texteditor, der das Festlegen der Zeichenkodierung (z. B. Notepad ++) unterstützt, und setzen Sie ihn auf UTF-8. Dann können Sie Chinesisch in Ihren Quellcode schreiben, wenn Sie möchten ... Oder bleiben Sie in der Kategorie von Personen, auf die mein erster Kommentar abzielt; =) en.wikipedia.org/wiki/Character_encoding
Samuel Rossille
4
@Bluefire, Notepad ++ sollte gut damit umgehen, Sie müssen nur die Codierung im Menü auf UTF-8 oder UCS-2 ändern.
Heretic Monkey

Antworten:

195

Ich vermute, dass Sie tatsächlich Omegaeine Zeichenfolge sein möchten , die ein Omega in Großbuchstaben enthält? In diesem Fall können Sie schreiben:

var Omega = '\u03A9';

(Weil Ω ist die Unicode - Zeichen mit Codepunkt U + 03A9 , das heißt, 03A9ist 937., Mit Ausnahme der vier hexadezimalen Ziffern geschrieben)

Ruakh
quelle
4
Und wenn man herausfinden will, wie hoch
StanE
Eine andere Möglichkeit, den Hexadezimalwert für eine Unicode-Zeichenfolge aus JavaScript abzuleiten, ist: "Ω" .codePointAt (0) .toString (16);
KostasX
53

Obwohl @ruakh eine gute Antwort gegeben hat, werde ich der Vollständigkeit halber einige Alternativen hinzufügen:

Sie können sogar var Omega = '&#937;'in JavaScript verwenden, aber nur, wenn Ihr JavaScript-Code lautet:

  • innerhalb eines Ereignisattributs wie in onclick="var Omega = '&#937'; alert(Omega)"oder
  • in einem scriptElement in einem XHTML- (oder XHTML + XML-) Dokument, das mit einem XML-Inhaltstyp bereitgestellt wird.

In diesen Fällen wird der Code zuerst (bevor er an den JavaScript-Interpreter übergeben wird) von einem HTML-Parser analysiert, damit Zeichenreferenzen wie &#937;erkannt werden. Die Einschränkungen machen dies in den meisten Fällen zu einem unpraktischen Ansatz.

Sie können das Ω-Zeichen auch als solches eingeben, wie in var Omega = 'Ω', aber dann muss die Zeichencodierung dies zulassen, die Codierung muss ordnungsgemäß deklariert sein und Sie benötigen eine Software, mit der Sie solche Zeichen eingeben können. Dies ist eine saubere Lösung und durchaus machbar, wenn Sie für alles die UTF-8-Codierung verwenden und bereit sind, die von ihr verursachten Probleme zu lösen. Der Quellcode ist lesbar, und wenn Sie ihn lesen, sehen Sie sofort das Zeichen selbst anstelle von Code-Notationen. Andererseits kann es zu Überraschungen kommen, wenn andere Personen mit Ihrem Code arbeiten.

Die Verwendung der \uNotation wie in var Omega = '\u03A9'funktioniert unabhängig von der Zeichenkodierung und ist in der Praxis nahezu universell. Es kann jedoch als solches nur bis zu U + FFFF verwendet werden, dh bis zu \uffff, aber die meisten Charaktere, von denen die meisten Menschen jemals gehört haben, fallen in diesen Bereich. (Wenn Sie "höhere" Zeichen benötigen, müssen Sie entweder Ersatzpaare oder einen der beiden oben genannten Ansätze verwenden.)

Sie können mit der String.fromCharCode()Methode auch ein Zeichen erstellen, indem Sie die Unicode-Zahl als Parameter in Dezimalzahl wie in var Omega = String.fromCharCode(937)oder Hexadezimalzahl in übergeben var Omega = String.fromCharCode(0x3A9). Dies funktioniert bis zu U + FFFF. Dieser Ansatz kann auch verwendet werden, wenn Sie die Unicode-Nummer in einer Variablen haben.

Jukka K. Korpela
quelle
18
Die Zeiten haben sich jetzt geändert, 5 Jahre später verwenden die Leute diese Dinge, die "Emoji" genannt werden, außerhalb des U+FFFFBereichs. JavaScript hat auch, also können Sie dies tun. var poop = '\u{1F4A9}';
Benutzer, der kein Benutzer ist
1
@Userthatisnotauser und das sollte die akzeptierte Antwort sein!
Marten Koetsier
Wie können Sie das Zeichen 'open lock' '\ uD83D \ uDD13' mit dem Code '0x1F512' in JavaScript einfügen? Und warum brauchen wir zwei Codes, um ein Zeichen einzufügen?
Tarekahf
5
@tarekahf Hier ist eine kurze Lektion über Unicode. UTF-16 überspannte nur die Unicode-Punkte U + 0000 bis U + FFFF. Dann wuchs Unicode und es wurden Ersatzzeichen erfunden, damit UTF-16 auf diese Punkte zugreifen konnte. Aber JavaScript kann dies jetzt einfach tun: var lock = '\u{1F512}'Und Sie erhalten Folgendes: 🔓
Benutzer, der kein Benutzer ist
4

Die Antwort ist richtig, aber Sie müssen keine Variable deklarieren. Eine Zeichenfolge kann Ihren Charakter enthalten:

"This string contains omega, that looks like this: \u03A9"

Leider werden diese Codes in ASCII immer noch für die Anzeige von UTF-8 benötigt, aber ich warte immer noch (seit zu vielen Jahren ...) auf den Tag, an dem UTF-8 mit ASCII identisch sein wird und ASCII nur eine Erinnerung an das sein wird Vergangenheit.

Fresko
quelle
9
Emoji macht das Eingeben dieser Codes noch schwieriger! \u{1F641}= 🙁
Benutzer, der kein Benutzer ist