前回、特殊な文字として異体字セレクタについて紹介させていただきました。
今回は、似たような特殊な文字としてサロゲートペア文字について紹介させていただきます。
サロゲートペア文字をご存じでしょうか?Unicodeで通常使用している一般的な文字は、2バイトのコードで表現することが可能ですが、サロゲートペア文字とは、2つの2バイトのコードを組み合わせて1つの文字を表現しています。
サロゲートペア文字の一例としては以下のような文字があります。
漢字

絵文字

このようにサロゲートペア文字は、従来の2バイトのコードでは表現しきれない文字を拡張し、より多くの言語や記号をサポートすることができます。
普通に文字としてやり取りするには表現の幅が広がるため便利ですが、2バイトのコードを2つ組み合わせて使用する仕組みなので、使い方によっては注意が必要になるケースもあります。
今回はMicrosoft Excelを使用して例を紹介します。
下記の画像では、B3のセルにサロゲートペア文字である「ホッケ(魚偏に花)」という文字を入力し、LEN関数で文字数を表示しています。

LEN関数は半角全角の区別なしに、1文字を1として値を返してくれる関数なので、上記の結果では1が出てきてほしいところですが、2文字としてカウントされてしまいます。
続いてB3のセルに「*ホッケ(魚偏に花)*はアイナメ科の魚です」と入力し、MID関数を使用して、3番目の文字から4文字分取り出し「アイナメ」と表示させてみます。

結果としては、見た目上の2番目の文字から4文字が表示されており、サロゲートペア文字が2文字でカウントされているようです。
このように、アプリケーションによっては見た目で見えている文字数と内部的に処理している文字数が異なることがあるため、入力項目の文字数制限がある場合に、1つの文字が2文字とカウントされる可能性があることや文字列を操作するような処理を入れる場合には、注意が必要となります。
※Excelの場合は「数式」メニューの「計算方法の設定」から「互換性バージョン」を選択し、「バージョン2(最新)」を選択することで正しい計算結果を得られるようにすることが可能です。
他にも、アプリケーションによってはサロゲートペア文字に対応しておらず、文字化けなど意図した表示とならないことなども考えられます。以上、サロゲートペア文字のご紹介でした。

