はじめに
サロゲートペアという言葉を聞いてよくわからなかったので、調べたことを備忘録としてまとめておこうと思います。
サロゲートペアについて調べてみる
まずサロゲートペアについて話す前に、Unicode の話をしようと思います。
Unicode とは
Unicode とは、世界中の文字を一意に表現するための文字コードのことです。日本語に使われるかなや、英語に使われるアルファベット、それ以外の言語で使われる文字が含まれます。
Unicode は様々なエンコーディング方式(例えば UTF-8、UTF-16、UTF-32)を使用し、これらは 1 文字を表現するのに可変長のバイトを使用します。UTF-8は 1 ~ 4 バイト、UTF-16 は 2 バイトまたは 4 バイトを使用できます。
サロゲートペアとは
サロゲートペアとは、2 つの 2 バイトのコードユニットの組み合わせです。これには、上位サロゲートと下位サロゲートがあります。これらの範囲は、それぞれ 2^10 (= 1,024) 個のコードポイントを持ちます。上位サロゲートと下位サロゲートは、それぞれ単体では意味をなしません。それぞれが組み合わさることで初めて特定の文字を表します。これにより、追加の 1,048,576 個のコードポイントが利用可能になりました。
サロゲートペアの問題点
サロゲートペアを使う文字は、特に文字列の長さのカウントや文字の切り出しで注意が必要です。2 つのコードユニットが 1 つの文字を表すため、一般的な文字数カウント方法では正確な結果が得られません。
知人が、ChatGPT などの AI が苦手なことの一つに、文字数カウントがあると言っていて、その理由がサロゲートペアを使った文字をカウントしている時があるからと言っていました。
参考資料
以下の記事を参考に作成しました。