JavaScriptにUnicode文字を挿入する


133

オメガ(Ω)をHTMLページに挿入する必要があります。そのためにHTMLエスケープコードを使用しているので、ΩΩを記述して取得できます。私がそれをHTML要素に入れると、それで問題ありません。しかし、それを私のJSに挿入しようとすると、たとえばvar Omega = Ω、そのコードがJSとして解析され、全体が機能しません。誰もがこれについてどうやって行くか知っていますか?


15
var Omega = "Ω";単純すぎます?
異端者の猿

6
Notepadはそれを受け入れません、それはO:Pを書き込みます
Bluefire

13
@MikeMcCaughanはい。ただし、他の開発者がソースファイルのエンコーディングを変更すると、失われます...「OOOOps <ソフトウェアのプレースホルダ>がデフォルトのエンコーディングとしてCP1250を使用していることを知らなかったコミット時の小さな変更」や「キャラクターのエンコ-なに?」; =)
サミュエルロッシル2012年

3
@Bluefireは、文字エンコードの設定(たとえば、notepad ++)をサポートするより優れたテキストエディターに切り替え、UTF-8に設定します。=);次に、あなたがしたい場合、あなたはあなたのソースコードにchineese書くことができます...またはPPLのカテゴリでの滞在は、私の最初のコメントの対象となるen.wikipedia.org/wiki/Character_encoding
サミュエルRossille

4
@ Bluefire、Notepad ++で問題なく処理できます。メニューのエンコーディングをUTF-8またはUCS-2に変更するだけです。
異端者の猿

回答:


195

私はあなたが実際に大文字のオメガを含む文字列になりたいOmegaと思いますか?その場合、次のように書くことができます:

var Omega = '\u03A9';

(ΩはコードポイントU + 03A9のUnicode文字であるため、つまり、4桁の16進数として書かれて03A9いる937場合を除き、です。)


4
そして、Unicode文字列の16進値が何であるかを知りたい場合:mothereff.in/js-escapes
StanE

JavaScript内からUnicode文字列の16進値を導出する別の方法は、次のとおりです。 "Ω" .codePointAt(0).toString(16);
KostasX

53

@ruakhは良い答えを出しましたが、完全を期すためにいくつかの代替案を追加します。

実際にvar Omega = '&#937;'はJavaScript でも使用できますが、JavaScriptコードが次の場合のみです。

  • onclick="var Omega = '&#937'; alert(Omega)"またはなどのイベント属性内
  • scriptXMLコンテンツタイプで提供されるXHTML(またはXHTML + XML)ドキュメント内の要素内。

これらの場合、コードは最初に(JavaScriptインタープリターに渡される前に)HTMLパーサーによって解析され、などの文字参照&#937;が認識されます。制限により、ほとんどの場合、これは非現実的なアプローチになります。

のようにΩ文字を入力することもできますがvar Omega = 'Ω'、その場合は文字エンコーディングで許可されている必要があり、エンコーディングを適切に宣言する必要があります。また、そのような文字を入力できるソフトウェアが必要です。これはすっきりしたソリューションであり、すべてにUTF-8エンコーディングを使用し、それによって生じる問題に対処する準備ができている場合は非常に実現可能です。ソースコードは読み取り可能で、それを読み取ると、コード表記ではなく、文字自体がすぐに表示されます。一方、他の人があなたのコードで作業を始めた場合、それは驚きを引き起こすかもしれません。

のように\u表記法を使用するとvar Omega = '\u03A9'、文字エンコーディングとは関係なく機能し、実際にはほとんど普遍的です。ただし、U + FFFFまで、つまりまでしか使用できません\uffffが、ほとんどの人が聞いたことのあるほとんどのキャラクターがこの領域に分類されます。(「より高い」文字が必要な場合は、サロゲートペアまたは上記の2つの方法のいずれかを使用する必要があります。)

String.fromCharCode()メソッドを使用して文字を作成し、のように10進数var Omega = String.fromCharCode(937)またはのように16進数でUnicode番号をパラメーターとして渡すこともできますvar Omega = String.fromCharCode(0x3A9)。これはU + FFFFまで機能します。このアプローチは、変数にUnicode番号がある場合でも使用できます。


18
時代は変わり、5年後、人々はこれらの「絵文字」と呼ばれるものをU+FFFF範囲外で使用しています。JavaScriptにもあるので、これを行うことができます。var poop = '\u{1F4A9}';
ユーザーではないユーザー

1
@Userthatisnotauserそしてそれは受け入れられる答えなければなりません!
Marten Koetsier

JavaScriptで「0x1F512」という1つのコードを使用して、「オープンロック」文字「\ uD83D \ uDD13」を挿入するにはどうすればよいですか?そして、なぜ1つの文字を挿入するために2つのコードが必要なのでしょうか。
タレカフ

5
@tarekahf Unicodeに関する簡単なレッスンです。UTF-16は、UnicodeポイントU + 0000からU + FFFFのみをスパンしました。その後、Unicodeが成長し、サロゲートが発明されたため、UTF-16はこれらのポイントにアクセスできました。しかし、JavaScriptはちょうど今、この操作を行うことができます。var lock = '\u{1F512}'そして、あなたはこの取得:🔓
ユーザーでないユーザー

4

答えは正しいですが、変数を宣言する必要はありません。文字列にはあなたの文字を含めることができます:

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

残念ながら、UTF-8を表示するには、ASCIIのコードが必要ですが、UTF-8がASCIIと同じになる日が(あまりにも長い年月が経過しているため)まだ待っています。ASCIIは、過去。


9
絵文字を使用すると、これらのコードの入力がさらに難しくなります。\u{1F641}=🙁
ユーザーのユーザーではありません
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.