IME

サロゲート ペアについて

最終更新日:2009/5/23

Windows Vista から追加された文字(これらはすべて Unicode)の中には、サロゲート ペアという特殊な文字が含まれています。 Unicode は16ビットのコード体系で発表され、16ビットなので2の16乗=65,536種類(0x0000〜0xFFFF)の文字を表現できることになりました。 ところが、文字の追加要望が増えて65,536種類では足りなくなってしまったために、通常の文字は1文字2バイトを維持し一部の文字は1文字4バイトを使うという方法が導入されました。これが、サロゲート ペアと呼ばれるものです。

1文字が4バイトの文字が導入されたことで、文字数をカウントしたり部分文字列を取り出すプログラムの結果が変わってしまうことがあります。 下の表は、

をテスト データとして使い、VBA関数とExcelワークシート関数で文字長を返す Len関数や部分文字列を取り出す Mid関数の結果をまとめたものです。

関数の結果の違い

この検証により、次のようなことがわかります。

ということがわかります。そのため、文字数を数えたり部分文字列を取り出すプログラムでサロゲート ペアを扱えるようにするには、適切に修正する必要があります。

このファイルを Windows XP で開くと、Windows Vista から追加された文字は表示できず「・」になっていることがわかります。

Windows XP での表示

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

Windows XP のメモ帳での表示


<サイト内関連URL>

  • “つちよし”を入力する方法
  • Windows Vista から字形が変わる文字のフォント
  • Windows Vista/7 で変換候補に表示する文字を制限する方法
  • Windows 8 で変換候補に表示する文字を制限する方法