在 XML 資料上使用 Unicode

SQL Server 會使用 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 資料類型。這樣可以儘量減少字元損毀的情形。

請參閱

參考