SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2012 の IVS のサポート状況

leave a comment

Windows 8 CP や Windows Server 8 Beta (Windows Server 2012) の IME では IVS (Ideographic Variation Sequence) がサポートされるようになりました。
IVS については Wikipedia の 異体字セレクタ が参考になります。

デフォルトでは IME の設定で IVS を含む文字の入力が制限されているのですが、IME のプロパティを開き、変換の詳細設定から有効にすることができます。
image

Windows 8 CP の IME パッドでは異体字セレクター補助が追加されていることが確認できますね。
image

こちらは WIndows Server 2008 R2 の IME パッドですが、追加特殊用途面がないことが確認できます。
image

IVS の SQL Server 2012 の対応状況について少し見てみたいと思います。

■IVS に該当する文字の格納と表示


IVS を含む文字の入力を有効にするまでは [くず] の変換結果はこのようになっています。
image

変換文字の制限をしないようようにすると変換結果に環境依存文字のくずが追加されます。
image

これを SQL Server に INSERT するためには通常の Unicode 文字列の挿入度同じで N プレフィックスを設定することで格納できます。

image

最初の文字が環境依存もじでないもの、次の文字が環境依存文字になります。
今回は、Windows Server 8 Beta + SQL Server 2012 の環境を使用しているのですが、SELECT でも正常に表示がされます。
image

ただし、これは OS に Windows 8 CP / Windows Server 8 Beta を使用している場合の動作になります。
Windows 7 や WIndows Server 2008 R2 は IVS をサポートしたフォントはデフォルトでは含まれていませんので、環境依存文字のくずのほうは表示が崩れます。
# 現状でしたら有償で対応しているフォントをサードパーティのベンダーから購入すればいけると思うのですがフォントを持っていないので試せていません。
image

環境依存文字のくずという漢字は漢字1文字が最大8バイト、Unicodeの「IVS」とは? によると U+845B U+DB40 U+DD00 で構成されています。
環境依存文字でないものはU+845B で構成されています。
image

IVS に対応していないフォントの場合は、最初の U+845B と文字化けしてしまったものが表示されるようですね。

 

■IVS に該当する文字の条件検索


軽く試したところ完全一致や部分一致の検索はできそうでした。
image

ただし、LEN を使用した文字列の長さの取得や UNICODE 関数を使用したコードの取得といった操作に関しては SC の照合順序を使用していても実際とは異なる結果が返ってくるようです。
# SC の照合順序を使用する前のサロゲートペアの文字に対しての処理と似たような挙動となるようです。

image

昨日、Windows 8 のセミナーに出席して ISV に対しての SQL Server のサポート状況が気になったので少し調べてみました。

Written by masayuki.ozawa

5月 26th, 2012 at 12:22 pm

Leave a Reply

*