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.