作者: davi
日時: 2005/12/15(21:29)
ねこ丸さん  <  こん??は でび です

On Thu, 15 Dec 2005 16:40:24 +0900 (JST)
wtnabe@... (ねこ丸) wrote:

>  サロゲートペアってどういうシーンで使われるんですか?(^^;

使える文字が増えます。
特定領域のコードについてだけ、2文字分を組み合わせる
こととして、それで1文字を表現します。

Bit別冊『インターネット時代の文字コード』によると、

| UTF-16とは、BMPのなかで保留(使用禁止)領域であった1024の
|区点をもつ2つの未定義領域を上位1024個(0xD800〜0xDBFF)と
|下位1024個(0xDC00〜DFFF)で組み合わせることによって、
|1024の2乗=1048576字を表現可能とさせる符号化方式である。
|
|この組み合わせをサロゲート・ペア(surrogate pair)と呼ぶ。
|拡張部分の先頭文字は0xD800DC00、終端文字は0xDBFFDFFFとなり、
|結局、65536−(1024×2)+1048576=1112064字を使用できる
|ようになる。
|
|この方式には32bitコードを用いず16bitコードのままで、
|65536を1112,064までに拡張(1046528字分増える)できるという
|メリットがある。

だそうです。

従って、UTF16にUTF8を組み合わせると、ASCII文字は1バイト、
S-JIS内にあった漢字などのUCS2領域の文字は3バイト、
拡張Bで増補された漢字などは6バイトで表現されるという、
とんでもないエンコーディングになります。

美しくないですね。

# 2048字分BMP領域が増えるから、とか言って、
# 0xD800〜DFFFの領域の文字が単独で現れたときは、
# 更に別の文字を示す、なんてことになっていたら
# 面倒ですね。

でび  http://homepage1.nifty.com/davi/