Unicode エンコード体系間のデータ変換の管理
このトピックでは、サーバー側のデータ保存もデータのやり取りを行うクライアント アプリケーションも Unicode に対応する反面、使用する Unicode エンコード体系が異なる場合に、文字データの整合性を維持する方法について説明します。SQL Server では、UCS-2 エンコード体系で Unicode が格納されます。ただし、多数のクライアントは別のエンコード体系、一般に UTF-8 で Unicode を処理します。このシナリオは、Web ベースのアプリケーションで頻繁に発生します。
このような場合も、基本的にはあるエンコード体系から別のエンコード体系への変換であるため、「Unicode を使用するサーバーと Unicode 以外を使用するクライアント間のデータ変換の管理」および「クライアントとサーバーのコード ページ間のデータ変換の管理」で説明されているのと同じソリューションの多くを適用できます。サーバーに送信された Unicode 文字列定数の先頭には大文字の N を付ける必要があります。Web ベースのアプリケーションの場合は、クライアント側の HTML ページの META 属性で CHARSET コードを指定します。たとえば、エンコード体系が UTF-8 の場合は、CHARSET = utf-8 を指定します。サーバー側では、Session.CodePage プロパティまたは @Codepage ディレクティブを使用して、クライアントのエンコード体系を指定します。たとえば、codepage=65001 は UTF-8 エンコード体系を指定します。これらの指示に従うと、インターネット インフォメーション サービス (IIS) 5.0 以降のバージョンでは、ユーザー側で操作することなく、UTF-8 から UCS-2 への変換 (および UCS-2 から UTF-8 への変換) がシームレスに処理されます。
Visual Basic のアプリケーションでは、文字列は UCS-2 エンコード体系で処理されます。したがって、Visual Basic のアプリケーションと SQL Server のインスタンスとの間では、エンコード体系の変換を明示的に指定する必要はありません。