Usar Unicode con datos XML
SQL Server almacena los datos XML mediante el esquema de codificación UTF-16.Puesto que los datos UTF-16 son de ancho variable, se procesan según un protocolo orientado a bytes. Esto significa que los datos UTF-16 se pueden tratar de forma que sean independientes del orden de bytes de distintos equipos (little endian y big endian). Por tanto, UTF-16 resulta adecuado para recorrer distintos equipos que utilizan codificaciones y sistemas de orden de bytes diferentes. Puesto que los datos XML se suelen compartir en las redes, conviene mantener el almacenamiento UTF-16 predeterminado de los datos XML en la base de datos y al exportar datos XML a clientes.
Si necesita especificar una codificación distinta, puede utilizar consultas FOR XML y especificar lo siguiente:
La propiedad Output Encoding de un objeto Response de secuencia de datos con formato XML en páginas Active Server (ASP).
Por ejemplo, el código ASP siguiente indica al explorador que debe mostrar una secuencia de datos entrante con formato XML en UCS-2:
<% cmdXML.Properties("Output Encoding") = "UCS-2" %>
Una codificación de salida en una dirección URL cuando se realiza una consulta HTTP.
En el ejemplo siguiente se especifica UCS-2 como la codificación de salida del documento XML devuelto por esta solicitud:
http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&outputencoding=UCS-2
Una codificación de salida en una plantilla u hoja de estilo XML.
En el ejemplo siguiente se especifica UCS-2 como la codificación de salida del encabezado de este documento de plantilla 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>
Tenga en cuenta que si se especifica una codificación directamente en una hoja de estilo XSL, se reemplazará la codificación especificada en la plantilla. No obstante, la propiedad Output Encoding especificada en la página ASP reemplaza a ambas.
Si se insertan datos en una base de datos de SQL Server mediante OPENXML, se deben especificar los tipos de datos Unicode en cualquier lugar del conjunto de filas en el que puedan aparecer datos multilingüe. De este modo se minimizan los daños en los caracteres.