Muszę wstawić Omega (Ω) na moją stronę HTML. W tym celu używam jego kodu ucieczki HTML, więc mogę pisać Ω
i pobierać Ω. Wszystko jest w porządku, kiedy umieszczam to w elemencie HTML; Jednak kiedy próbuję umieścić go w moim JS, np var Omega = Ω
. analizuje ten kod jako JS i całość nie działa. Czy ktoś wie, jak się do tego zabrać?
javascript
html
unicode
Niebieski ogień
źródło
źródło
var Omega = "Ω";
zbyt proste?Odpowiedzi:
Zgaduję, że faktycznie chcesz
Omega
być łańcuchem zawierającym omegę z wielkiej litery? W takim przypadku możesz napisać:var Omega = '\u03A9';
(Ponieważ Ω jest znakiem Unicode z punktem kodowym U + 03A9 ; to
03A9
znaczy937
, z wyjątkiem zapisanego jako cztery cyfry szesnastkowe).źródło
Chociaż @ruakh udzielił dobrej odpowiedzi, dodam kilka alternatyw dla kompletności:
W rzeczywistości możesz użyć nawet
var Omega = 'Ω'
w JavaScript, ale tylko wtedy, gdy twój kod JavaScript to:onclick="var Omega = 'Ω'; alert(Omega)"
lubscript
elemencie wewnątrz dokumentu XHTML (lub XHTML + XML) udostępnianego z treścią typu XML.W takich przypadkach kod zostanie najpierw (przed przekazaniem do interpretera JavaScript) przeanalizowany przez parser HTML, aby
Ω
rozpoznawane były odniesienia do znaków, takie jak . Ograniczenia sprawiają, że w większości przypadków jest to niepraktyczne podejście.Możesz również wpisać znak Ω jako taki, jak in
var Omega = 'Ω'
, ale wtedy kodowanie znaków musi na to pozwalać, kodowanie musi być poprawnie zadeklarowane i potrzebujesz oprogramowania, które pozwoli ci wprowadzić takie znaki. Jest to czyste rozwiązanie i całkiem wykonalne, jeśli używasz kodowania UTF-8 do wszystkiego i jesteś przygotowany do radzenia sobie z tworzonymi przez nie problemami. Kod źródłowy będzie czytelny, a czytając go, od razu zobaczysz sam znak, zamiast notacji kodu. Z drugiej strony może to spowodować niespodzianki, jeśli inne osoby zaczną pracować z Twoim kodem.Używanie
\u
notacji, jak wvar Omega = '\u03A9'
, działa niezależnie od kodowania znaków i jest w praktyce prawie uniwersalne. Może być jednak jako taki używany tylko do U + FFFF, tj. Do\uffff
, ale większość postaci, o których większość ludzi kiedykolwiek słyszała, należy do tego obszaru. (Jeśli potrzebujesz „wyższych” znaków, musisz użyć par zastępczych lub jednego z dwóch powyższych podejść).Możesz również skonstruować znak za pomocą
String.fromCharCode()
metody, przekazując jako parametr numer Unicode, dziesiętnievar Omega = String.fromCharCode(937)
lub szesnastkowo, jak wvar Omega = String.fromCharCode(0x3A9)
. Działa to do U + FFFF. Tego podejścia można użyć nawet wtedy, gdy w zmiennej znajduje się numer Unicode.źródło
U+FFFF
zasięgiem. JavaScript też ma, więc możesz to zrobić.var poop = '\u{1F4A9}';
var lock = '\u{1F512}'
Otrzymujesz to: 🔓Odpowiedź jest prawidłowa, ale nie musisz deklarować zmiennej. Ciąg może zawierać twój znak:
"This string contains omega, that looks like this: \u03A9"
Niestety nadal te kody w ASCII są potrzebne do wyświetlania UTF-8, ale wciąż czekam (od zbyt wielu lat ...) na dzień, w którym UTF-8 będzie taki sam jak był ASCII, a ASCII będzie tylko wspomnieniem przeszłość.
źródło
\u{1F641}
= 🙁Jedną z opcji jest dosłowne umieszczenie znaku w skrypcie, np .:
const omega = 'Ω';
Wymaga to poinformowania przeglądarki o prawidłowym kodowaniu źródła, patrz Unicode w JavaScript
Jeśli jednak nie możesz lub nie chcesz tego zrobić (np. Ponieważ znak jest zbyt egzotyczny i nie można oczekiwać, że będzie dostępny w czcionce edytora kodu), najbezpieczniejszą opcją może być użycie ciągu w nowym stylu ucieczka lub
String.fromCodePoint
:const omega = '\u{3a9}'; // or: const omega = String.fromCodePoint(0x3a9);
Nie jest to ograniczone do UTF-16, ale działa dla wszystkich punktów kodowych Unicode. Dla porównania, inne wymienione tutaj podejścia mają następujące wady:
const omega = 'Ω';
): działają tylko wtedy, gdy są renderowane bez zmiany znaczenia w elemencie HTMLconst omega = '\u03A9';
znaki ucieczki w starym stylu ( ): ograniczone do UTF-16String.fromCharCode
: ograniczone do UTF-16źródło