これが機能する理由:
<p id="emoji">😄</p>
そして、これはしません:
document.getElementById("emoji").innerHTML = String.fromCharCode(parseInt('1f604', 16));
JS用語の「char」は実際にはUTF-16コード単位であり、完全なUnicode文字ではありません。 (この悲しい状況は、違いがなかった古代に由来します*。)基本多言語プレーンの外部で文字を使用するには、UTF-16でエンコードされた形式の 代理)で記述する必要があります。 2つの16ビットコードユニットのペア :
String.fromCharCode(0xD83D, 0xDE04)
ECMAScript 6では、文字列を完全なUnicodeコードポイントであるかのように処理できるインターフェイスがいくつかありますが、それらは不完全であり、コードユニットシーケンスとして格納されているStringタイプのファサードにすぎません。その後、次のことができるようになります。
String.fromCodePoint(0x1F604)
今日のブラウザでこの機能を使用できるようにするためのポリフィルコードについては、 この質問 を参照してください。
(*:タイムマシンにアクセスできるようになると、ヒトラーを放っておいて、UTF-8を以前に発明するために戻ってきます。UTF-16はかつてなかったに違いありません!)
コードにString.fromCodePoint()
を含めたくない場合は、ハッキーメソッドを使用することもできます。それは仮想要素の作成で構成されています...
elem=document.createElement('p')
...作業用HTMLで埋める...
elem.innerHTML = "😄"
...そしてついにその価値を手に入れる
value = elem.innerHTML
簡単に言うと、これは、HTMLコンテナーの値を設定するとすぐに、値が対応する文字に変換されるために機能します。
私が助けることができることを願っています。