Windows 8 CP や Windows Server 8 Beta (Windows Server 2012) の IME では IVS (Ideographic Variation Sequence) がサポートされるようになりました。
IVS については Wikipedia の 異体字セレクタ が参考になります。
デフォルトでは IME の設定で IVS を含む文字の入力が制限されているのですが、IME のプロパティを開き、変換の詳細設定から有効にすることができます。
Windows 8 CP の IME パッドでは異体字セレクター補助が追加されていることが確認できますね。
こちらは WIndows Server 2008 R2 の IME パッドですが、追加特殊用途面がないことが確認できます。
IVS の SQL Server 2012 の対応状況について少し見てみたいと思います。
■IVS に該当する文字の格納と表示
IVS を含む文字の入力を有効にするまでは [くず] の変換結果はこのようになっています。
変換文字の制限をしないようようにすると変換結果に環境依存文字のくずが追加されます。
これを SQL Server に INSERT するためには通常の Unicode 文字列の挿入度同じで N プレフィックスを設定することで格納できます。
最初の文字が環境依存もじでないもの、次の文字が環境依存文字になります。
今回は、Windows Server 8 Beta + SQL Server 2012 の環境を使用しているのですが、SELECT でも正常に表示がされます。
ただし、これは OS に Windows 8 CP / Windows Server 8 Beta を使用している場合の動作になります。
Windows 7 や WIndows Server 2008 R2 は IVS をサポートしたフォントはデフォルトでは含まれていませんので、環境依存文字のくずのほうは表示が崩れます。
# 現状でしたら有償で対応しているフォントをサードパーティのベンダーから購入すればいけると思うのですがフォントを持っていないので試せていません。
環境依存文字のくずという漢字は漢字1文字が最大8バイト、Unicodeの「IVS」とは? によると U+845B U+DB40 U+DD00 で構成されています。
環境依存文字でないものはU+845B で構成されています。
IVS に対応していないフォントの場合は、最初の U+845B と文字化けしてしまったものが表示されるようですね。
■IVS に該当する文字の条件検索
ただし、LEN を使用した文字列の長さの取得や UNICODE 関数を使用したコードの取得といった操作に関しては SC の照合順序を使用していても実際とは異なる結果が返ってくるようです。
# SC の照合順序を使用する前のサロゲートペアの文字に対しての処理と似たような挙動となるようです。
昨日、Windows 8 のセミナーに出席して ISV に対しての SQL Server のサポート状況が気になったので少し調べてみました。