Verwenden von Unicode mit XML-Daten

In SQL Server werden XML-Daten mit dem UTF-16-Codierungsschema gespeichert.Da UTF-16-Daten eine variable Länge besitzen, werden Sie entsprechend einem byteorientierten Protokoll verarbeitet. Das bedeutet, dass UTF-16-Daten in einer Weise behandelt werden können, die unabhängig von der Bytesortierung auf verschiedenen Computern ist (Little-Endian- im Gegensatz zum Big-Endian-Format). Daher ist UTF-16 gut für das Durchsuchen unterschiedlicher Computer geeignet, auf denen unterschiedliche Codierungen und Bytesortierungssysteme verwendet werden. Da XML-Daten für gewöhnlich netzwerkübergreifend freigegeben werden, ist es sinnvoll, die Standard-UTF-16-Speicherung von XML-Daten in Ihrer Datenbank beizubehalten, auch wenn Sie XML-Daten zu Clients exportieren.

Wenn Sie eine abweichende Codierung angeben müssen, können Sie FOR XML-Anforderungen verwenden und Folgendes angeben:

  • Die Ausgabecodierung-Eigenschaft eines XML-formatierten Datenstrom-Antwort-Objekts in ASP (Active Server Pages).

    So weist z. B. der folgende ASP-Code den Browser an, einen eingehenden XML-Datenstrom in UCS-2 anzuzeigen:

    <% cmdXML.Properties("Output Encoding") = "UCS-2" %>
    
  • Eine Ausgabecodierung in einer URL, wenn Sie eine HTTP-Anforderung verwenden.

    Mit dem folgenden Beispiel wird UCS-2 als Ausgabecodierung des XML-Dokuments angegeben, das durch diese Anforderung zurückgegeben wird:

    http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&outputencoding=UCS-2
    
  • Eine Ausgabecodierung in einer XML-Vorlage oder einem XML-Stylesheet.

    Mit dem folgenden Beispiel wird UCS-2 als Ausgabecodierung im Header dieses XML-Vorlagedokuments angegeben:

    <?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> 
    

Beachten Sie, dass jede in der Vorlage angegebene Codierung außer Kraft gesetzt wird, wenn in einem XSL-Stylesheet eine direkte Codierungsangabe erfolgt. Allerdings werden beide Codierungsangaben durch die auf der ASP-Seite angegebene Ausgabecodierung-Eigenschaft außer Kraft gesetzt.

Wenn Sie mithilfe von OPENXML Daten in eine SQL Server-Datenbank einfügen, sollten Sie überall dort im Rowset Unicode-Datentypen angeben, wo mehrsprachige Daten auftreten könnten. Damit wird das Risiko der Zeichenbeschädigung minimiert.

Siehe auch

Verweis