IME
サロゲート ペアについて
最終更新日:2009/5/23
Windows Vista から追加された文字(これらはすべて Unicode)の中には、サロゲート ペアという特殊な文字が含まれています。 Unicode は16ビットのコード体系で発表され、16ビットなので2の16乗=65,536種類(0x0000〜0xFFFF)の文字を表現できることになりました。 ところが、文字の追加要望が増えて65,536種類では足りなくなってしまったために、通常の文字は1文字2バイトを維持し一部の文字は1文字4バイトを使うという方法が導入されました。これが、サロゲート ペアと呼ばれるものです。
1文字が4バイトの文字が導入されたことで、文字数をカウントしたり部分文字列を取り出すプログラムの結果が変わってしまうことがあります。
下の表は、
- 1文字目にサロゲート ペアの
を含む文字 - シフトJIS の文字だけで表現できる「吉田」
- 1文字目に通常の2バイトUnicode文字を含む文字

この検証により、次のようなことがわかります。
- サロゲート ペアを含む文字列の長さは、見た目の文字長は2でも、Len関数を使うと3になっている。
- サロゲート ペア文字は、Mid関数で第3引数の文字長を2にしないと取得できない。
- VBA関数と Excelワークシート関数で、同じ名前の関数を使っても結果が異なる。
ということがわかります。そのため、文字数を数えたり部分文字列を取り出すプログラムでサロゲート ペアを扱えるようにするには、適切に修正する必要があります。
このファイルを Windows XP で開くと、Windows Vista から追加された文字は表示できず「・」になっていることがわかります。

さらに、このシートの内容を Windows XP のメモ帳に貼り付けると、サロゲート ペアの文字は通常のUnicode文字と異なり2文字として扱われていることがわかります。

<サイト内関連URL>