web-dev-qa-db-ja.com

JavaScriptにUnicode文字を挿入します

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

111
Bluefire

私はあなたが実際にOmegastringを含む大文字のオメガにしたいのでしょうか?その場合、次のように記述できます。

var Omega = '\u03A9';

(Ωは コードポイントU + 03A9のUnicode文字 であるため、03A9937ですが、4桁の16進数として記述されています。)

170
ruakh

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

実際、JavaScriptでvar Omega = 'Ω'を使用することもできますが、それはJavaScriptコードが次の場合のみです:

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

これらの場合、コードは最初に(JavaScriptインタープリターに渡される前に)HTMLパーサーによって解析され、Ωなどの文字参照が認識されます。制限により、ほとんどの場合、これは実用的ではありません。

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

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

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

45

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

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

残念ながら、ASCIIのこれらのコードはUTF-8を表示するために必要ですが、UTF-8がASCIIと同じになる日を(長年にわたって...)待っています。 _だったし、ASCIIは過去の記憶に過ぎない。

4
fresko