Usando Unicode com dados XML
O SQL Server armazena os dados XML usando o esquema de codificação UTF-16. Como os dados UTF-16 são de largura variável, são processados de acordo com um protocolo orientado a bytes, o que significa que os dados UTF-16 podem ser tratados sem depender da ordenação de bytes em diferentes computadores (little endian versus big endian). Assim, UTF-16 é bem apropriado para passar por diferentes computadores que usam diferentes codificações e sistemas da ordenação de byte. Como os dados XML normalmente são bastante compartilhados por rede, faz sentido manter o padrão de armazenamento UTF-16 de dados XML em seu banco de dados e ao exportar dados XML para clientes.
Se você precisar especificar uma codificação diferente, poderá usar solicitações FOR XML e especificar o seguinte:
A propriedade Output Encoding de dados formatados em XML flui para o objeto Response em uma página ASP (páginas de servidor ativo – Active Server Pages).
Por exemplo, o seguinte código de ASP informa ao navegador para exibir o fluxo de dados XML de entrada entrantes em UCS-2:
<% cmdXML.Properties("Output Encoding") = "UCS-2" %>
Uma codificação de saída de um URL ao fazer uma solicitação de HTTP.
O exemplo a seguir especifica UCS-2 como a codificação de saída do documento XML retornada por esta solicitação:
http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&outputencoding=UCS-2
Uma codificação de saída em um modelo XML ou folha de estilo.
O exemplo a seguir especifica UCS-2 como a codificação de saída no cabeçalho deste documento de modelo 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>
Observe que, se uma codificação for especificada diretamente em uma folha de estilo XSL, ela substituirá qualquer codificação especificada no modelo. Porém, ambas serão substituídas pela propriedade Output Encoding especificada na página ASP.
Ao inserir dados em um banco de dados do SQL Server usando OPENXML, é necessário especificar os tipos de dados Unicode sempre que houver a possibilidade de aparecer um conjunto de linhas em vários idiomas. Isso minimizará a corrupção de caracteres.