XML データでの Unicode の使用
SQL Server 2005 で XML データを格納するときのエンコード体系は UTF-16 です。UTF-16 データは可変幅なので、バイト指向のプロトコルに従って処理されます。つまり UTF-16 は、異なるコンピュータ上でもバイトの記述順序 (リトル エンディアンかビッグ エンディアンか) に関係なく処理されます。したがって、使用しているエンコードおよびバイト記述体系が異なるコンピュータどうしの通信に適しています。一般的に XML データはネットワーク間で広く共有されるので、XML データをクライアントにエクスポートする場合はデータを既定の UTF-16 のままでデータベースに保存するのが適切です。
エンコード体系を既定から変更する必要がある場合、FOR XML 要求を使用して次の項目を指定できます。
ASP (Active Server Pages) に表示される XML 形式のデータ ストリームの Response オブジェクトの Output Encoding プロパティ。
たとえば次の ASP コードは、受信した XML データ ストリームをUCS-2
で表示するようにブラウザに指示します。<% cmdXML.Properties("Output Encoding") = "UCS-2" %>
HTTP 要求を送信するときの URL の出力エンコード。
返される XML ドキュメントの出力エンコードを要求側でUCS-2
に指定する例を示します。http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&outputencoding=UCS-2
XML のテンプレートまたはスタイル シートの出力エンコード。
次に、XML テンプレート ドキュメントのヘッダーで出力エンコードをUCS-2
に指定する例を示します。<?xml version ='1.0' encoding='UCS-2'?> <root xmlns:sql='urn:schemas-microsoft-com:xml-sql' sql:xsl='MyXSL.xsl'> <sql:query> SELECT FirstName, LastName FROM Employees FOR XML AUTO </sql:query> </root>
テンプレートに指定したエンコードは、XSL スタイル シートに直接指定したエンコードよりも常に優先されます。また、ASP ページに指定した Output Encoding プロパティは、どちらのエンコードよりも優先されます。
OPENXML を使用して SQL Server データベースにデータを挿入するときは、多言語データが使用される可能性がある行セットのすべての箇所で Unicode データ型を使用してください。文字が正しく表示されない可能性を最小限に抑えることができます。