JavaScript'e Unicode karakteri ekle


134

Html sayfama bir Omega (Ω) eklemem gerekiyor. Bunu yapmak için HTML çıkışlı kodunu kullanıyorum, böylece yazabilir Ωve alabilirim. Bir HTML öğesine koyduğumda her şey yolunda ve iyi; ancak, var Omega = Ωonu JS'me koymaya çalıştığımda, örneğin , bu kodu JS olarak ayrıştırıyor ve her şey çalışmıyor. Bunun nasıl yapılacağını bilen var mı?


15
var Omega = "Ω";çok basit?
Heretic Maymun

6
Not defteri bunu kabul etmiyor, sadece
2012'de

13
@MikeMcCaughan Evet, ancak başka bir geliştirici kaynak dosyanın kodlamasını karıştırırsa, kaybettiniz ... Her zaman "OOOOps, <yazılım için yer tutucunun> varsayılan kodlama olarak CP1250 kullandığını bilmiyordum ve i "veya" karakter kodlama-ne "sırasında küçük bir değişiklik fark etmedi mi? ; =)
Samuel Rossille

3
@Bluefire, karakter kodlamasını (örn. Notepad ++) ayarlamayı destekleyen ve UTF-8'e ayarlayan daha iyi bir metin düzenleyiciye geçin. O zaman isterseniz kaynak kodunuza Çince yazabilirsiniz ... Veya ilk
yorumumun

4
@ Bluefire, Notepad ++ bunu halledebilir, sadece menüdeki Kodlamayı UTF-8 veya UCS-2 olarak değiştirmeniz gerekir.
Heretic Maymun

Yanıtlar:


197

Aslında büyük harf omega içeren bir dizgeOmega olmak istediğinizi tahmin ediyorum ? Bu durumda şunları yazabilirsiniz:

var Omega = '\u03A9';

(Ω olduğu için kod noktası U + 03A9 ile Unicode karakter , olduğu 03A9bir 937. Dört onaltılı basamağı olarak yazılır hariç)


4
Ve eğer biri bir unicode dizgesinin onaltılık değerinin ne olduğunu bulmak isterse: mothereff.in/js-escapes
StanE

JavaScript içinden bir unicode dizesi için onaltılık değer türetmenin başka bir yolu şudur: "Ω" .codePointAt (0) .toString (16);
KostasX

53

@Ruakh iyi bir cevap verse de, bütünlük için bazı alternatifler ekleyeceğim:

Aslında var Omega = '&#937;'JavaScript'te bile kullanabilirsiniz , ancak yalnızca JavaScript kodunuz:

  • olay özniteliğinin içinde, olduğu gibi onclick="var Omega = '&#937'; alert(Omega)"veya
  • scriptXML içerik türüyle sunulan bir XHTML (veya XHTML + XML) belgesinin içindeki bir öğede.

Bu durumlarda, kod ilk olarak (JavaScript yorumlayıcısına iletilmeden önce) bir HTML ayrıştırıcısı tarafından ayrıştırılarak, benzer karakter referanslarının &#937;tanınması sağlanır. Kısıtlamalar bunu çoğu durumda pratik olmayan bir yaklaşım haline getirir.

Ω karakterini olduğu gibi girebilirsiniz var Omega = 'Ω', ancak daha sonra karakter kodlaması buna izin vermeli, kodlamanın doğru şekilde bildirilmesi gerekir ve bu tür karakterleri girmenize izin veren yazılıma ihtiyacınız vardır. Bu, temiz bir çözümdür ve her şey için UTF-8 kodlamasını kullanırsanız ve bunun yarattığı sorunlarla ilgilenmeye hazırsanız oldukça uygulanabilirdir. Kaynak kodu okunabilir olacak ve onu okurken, kod gösterimleri yerine hemen karakterin kendisini göreceksiniz. Öte yandan, başkalarının kodunuzla çalışmaya başlaması sürprizlere neden olabilir.

\uGösterimi olduğu gibi kullanmak, var Omega = '\u03A9'karakter kodlamasından bağımsız çalışır ve pratikte neredeyse evrenseldir. Bununla birlikte, yalnızca U + FFFF'ye kadar kullanılabilir, yani \uffffçoğu insanın şimdiye kadar duyduğu çoğu karakter bu alana girer. ("Daha yüksek" karakterlere ihtiyacınız varsa, vekil çiftleri veya yukarıdaki iki yaklaşımdan birini kullanmanız gerekir.)

Ayrıca String.fromCharCode(), Unicode numarasını parametre olarak ondalık olarak var Omega = String.fromCharCode(937)veya olduğu gibi onaltılık olarak ileterek , yöntemi kullanarak bir karakter oluşturabilirsiniz var Omega = String.fromCharCode(0x3A9). Bu, U + FFFF'ye kadar çalışır. Bu yaklaşım, bir değişkende Unicode numarasına sahip olsanız bile kullanılabilir.


18
Zaman şimdi değişti, 5 yıl sonra, insanlar "emoji" denen bu şeyleri U+FFFFmenzil dışında kullanıyorlar . JavaScript'te de var, bu yüzden bunu yapabilirsiniz. var poop = '\u{1F4A9}';
kullanıcı olmayan kullanıcı

1
@Userthatisnotauser ve bu kabul edilen cevap olmalı!
Marten Koetsier

JavaScript'te "0x1F512" olan tek kodu kullanarak "açık kilit" karakterini "\ uD83D \ uDD13" nasıl ekleyebilirsiniz? Ve neden bir karakter eklemek için iki koda ihtiyacımız var?
tarekahf

5
@tarekahf İşte Unicode ile ilgili kısa bir ders. UTF-16 yalnızca Unicode noktaları U + 0000 ile U + FFFF arasında yayıldı. Sonra Unicode büyüdü ve vekiller icat edildi, böylece UTF-16 bu noktalara erişebildi. Ancak JavaScript bunu şimdi yapabilir: var lock = '\u{1F512}'Ve şunu elde edersiniz: 🔓
Kullanıcı olmayan kullanıcı

4

Cevap doğru, ancak bir değişken bildirmenize gerek yok. Bir dize, karakterinizi içerebilir:

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

Maalesef yine de ASCII'deki bu kodlar UTF-8'i görüntülemek için gereklidir, ancak hala UTF-8'in ASCII ile aynı olacağı günü bekliyorum (çok uzun yıllardan beri ...) ve ASCII'nin sadece bir hatırası olacak Geçtiğimiz.


9
Emoji bu kodları yazmayı daha da zorlaştırır! \u{1F641}= 🙁
Kullanıcı olmayan kullanıcı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.