在 XML 資料上使用 Unicode
SQL Server 2005 會使用 UTF-16 編碼配置來儲存 XML 資料。因為 UTF-16 資料是變數寬度,所以會依據位元組導向的通訊協定來處理。這表示可以將 UTF-16 資料當作是在不同電腦上、不受位元組順序影響的資料來處理 (little endian 對 big endian)。因此,UTF-16 很適合通行於使用不同編碼及位元組順序系統的不同電腦。因為 XML 資料通常都會在網路之間廣為共用,所以在您的資料庫中維護 XML 資料的預設 UTF-16 存放區,以及當您將 XML 資料匯出至用戶端時,都是很合理的。
若您必須指定不同的編碼,您可以使用 FOR XML 要求,並指定下列各項:
在 Active Server Pages (ASP) 中指定 XML 格式資料流 Response 物件的 Output Encoding 屬性。
例如,下列 ASP 程式碼會命令瀏覽器以UCS-2
顯示內送的 XML 資料流:<% cmdXML.Properties("Output Encoding") = "UCS-2" %>
當您執行 HTTP 要求時,在 URL 中指定輸出編碼方式。
下列範例指定UCS-2
來做為此要求所傳回之 XML 文件的輸出編碼方式。http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&outputencoding=UCS-2
在 XML 範本或樣式表中指定輸出編碼方式。
下列範例指定UCS-2
來做為此 XML 範本文件之標頭中的輸出編碼方式:<?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 資料類型。這樣可以儘量減少字元損毀的情形。