2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScriptとHTMLで、Unicodeのサロゲートペアを表示する練習

Posted at

(2015-04-27 の練習メモからこちらに移転)

文字コードの復習をちょっとしてたら、Unicodeのサロゲートペアって今まで気にしたこと無かったことに気が付きました。
ということで、お仕事でも扱うJavaScriptとHTMLで、まずはサロゲートペアを「表示」してみる練習です。(2015-04時点のES5対応迄)

簡単にまとめると以下のようになります。

  • HTMLなら・・・
    • 𠮷𠮟 のような数値文字参照を使って、Unicodeコードポイントをそのまま16進数で表記すればOK.
  • JavaScript(ES5まで)とJSONなら・・・
    • サロゲートペア対象外の文字なら、\u(コードポイント16進数表現) をリテラルとして使える。
    • サロゲートペア対象の文字なら、サロゲートペアに分割し、\u(上位サロゲートの16進数表現)\u(下位サロゲートの16進数表現) とする。
  • ES6での予定(上記jsfiddleには組み込んでません)
    • サロゲートペア対象の文字でも、分割せずにそのまま \u{20BB7} (土吉) と表記できる。
    • String.codePointAt() によりサロゲートペアを分割せずにコードポイントを取り出せる。
    • RegExpで /u フラグが追加され、サロゲートペアを分割せずに1文字として処理できる。

今回は表示しか練習しませんでした。文字数のカウントなど、より実践的なテクニックについては以下の参考URLの一部で詳しく解説されてます。

また、ES6でのUnicodeサポートについては以下を参考にしました。

※hatena id:jser さんからのコメントをきっかけに、ES6でのUnicodeサポートについて追記

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?