サロゲートペア(surrogate pair)とは、Unicodeで符号化に用いられる手法の一つである。
サロゲートは代用品の意で、基本多言語平面(Basic Multilingual Plane)中の未割当領域にある符号アドレス2つを一対としてその埒外にある符号アドレスを指定するためにそう呼ばれている。
サロゲートペアはBMPそのままでは収容し切れない各国の文字(漢字およびハングルが大分を占める)を追加するためにUnicodeに導入された。これらはUnicodeの追加領域(Supplementary Plane)のアドレス※と対応しており、相互に変換して利用する。
※BMP上のアドレスは全て4ヘキサデシマル値(以下qrt)で表されるので2バイトで事足りるが、SP上のアドレスは5qrt以上で表されるため4バイト必要になる。
サロゲートペアに供用されるBMPのアドレス領域は下記の区間となっている。
U+D800 - U+DBFF: 上位サロゲート(high surrogate)
U+DC00 - U+DFFF: 下位サロゲート(low surrogate)
これら2つの区間からそれぞれ抽出したアドレスの組合わせによって最大で約100万パターン{10242}を収録可能となる。
例えば先頭アドレスの組となるD800DC00には線文字Bの一つである LINEAR B SYLLABLE B008 A[𐀀]が割当てられている。
日本語の難読漢字もこのサロゲートペアを用いて収録しているものがあり、𩸽ほっけ[D867DE3D]、𩹉とびうお[D867DE49]などがここに収められている。
| BMP:U+0000 - U+FFFF | SP:U+10000〜U+10FFFF |
Unicode追加領域はU+10000〜U+10FFFFまでが確保されており、これらを16平面に分割して各用途に割り当てている。
第1平面[U+10000 - U+1FFFF]は追加多言語平面(Supplementary Multilingual Plane)という名称で、古代文字や記号・図柄類などが含まれる(携帯電話用の絵文字もここに収録)。
第2平面[U+20000 - U+2FFFF]は追加漢字平面(Supplementary Ideographic Plane)と呼ばれる漢字専用領域になっており、前項に挙げた𩸽や𩹉[U+29E49]もこの区間に収録されている。
第3平面 [U+30000 - U+3FFFF]は第三漢字平面Tertiary Ideographic Planeで、古代漢字や甲骨文字などが収録される予定。
第4平面〜第13平面[U+40000 - U+DFFFF]は未使用領域。
第14平面 [U+E0000 - U+EFFFF ]は追加特殊用途平面 Supplementary Special-purpose Planeで制御コード専用領域になっている。
第15平面・第16平面[U+F0000 - U+10FFFF]は私用面。
なお第0平面[U+0000 - U+FFFF]に相当するのがBMPである。
◆UTF-16サロゲートペアとUnicode追加領域のアドレス値には一定の数的対応関係があり、以下の式で表される{全て16進数表記}。
XXXXX= 10000 + (DYYY - D800) × 400 + (DZZZ - DC00)
XXXXX: Unicode拡張領域アドレス
DYYY: 上位サロゲートアドレス
DZZZ: 下位サロゲートアドレス
例えばD860DE77を右辺に代入すると
10000 + (D860 - D800) × 400 + (DE77- DC00) = 10000 + 60×400 + 277 = 10000 + 18000 + 277 = 28277
XXXXX=28277となり、D860DE77⇔U+28277でUnicode一覧表からこれは'𨉷'と分かる。
◆Unicode拡張領域アドレスからサロゲートペアのアドレスを算出する事も可能で、次の式から求められる。
DYYY= (XXXXX - 10000) ÷ 400 + D800
DZZZ= (XXXXX - 10000) % 400 + DC00
%:左項を右項で割った剰余値を返す演算子
急上昇ワード改
最終更新:2025/12/13(土) 07:00
最終更新:2025/12/13(土) 07:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。