web-dev-qa-db-ja.com

JavaScriptとHTMLを使用した絵文字の印刷

これが機能する理由:

<p id="emoji">&#x1f604;</p>

そして、これはしません:

document.getElementById("emoji").innerHTML = String.fromCharCode(parseInt('1f604', 16));
17
Tom Söderlund

JS用語の「char」は実際にはUTF-16コード単位であり、完全なUnicode文字ではありません。 (この悲しい状況は、違いがなかった古代に由来します*。)基本多言語プレーンの外部で文字を使用するには、UTF-16でエンコードされた形式の 代理)で記述する必要があります。 2つの16ビットコードユニットのペア

String.fromCharCode(0xD83D, 0xDE04)

ECMAScript 6では、文字列を完全なUnicodeコードポイントであるかのように処理できるインターフェイスがいくつかありますが、それらは不完全であり、コードユニットシーケンスとして格納されているStringタイプのファサードにすぎません。その後、次のことができるようになります。

String.fromCodePoint(0x1F604)

今日のブラウザでこの機能を使用できるようにするためのポリフィルコードについては、 この質問 を参照してください。

(*:タイムマシンにアクセスできるようになると、ヒトラーを放っておいて、UTF-8を以前に発明するために戻ってきます。UTF-16はかつてなかったに違いありません!)

37
bobince

コードにString.fromCodePoint()を含めたくない場合は、ハッキーメソッドを使用することもできます。それは仮想要素の作成で構成されています...

elem=document.createElement('p')

...作業用HTMLで埋める...

elem.innerHTML = "&#x1f604"

...そしてついにその価値を手に入れる

value = elem.innerHTML

簡単に言うと、これは、HTMLコンテナーの値を設定するとすぐに、値が対応する文字に変換されるために機能します。

私が助けることができることを願っています。

6
Thomas P.