Поделиться через


Использование Юникода с XML-данными

SQL Server хранит XML-данные с использованием схемы кодирования UTF-16. Поскольку данные UTF-16 имеют переменную длину, они обрабатываются побайтно. Это значит, что данные UTF-16 могут интерпретироваться независимо от порядка байтов на различных компьютерах (прямого или обратного). Следовательно, формат UTF-16 оптимален для использования на различных компьютерах с различными системами кодирования и порядком байтов. Поскольку обычно XML-данные широко используются в различных сетях, важно поддерживать способ хранения XML-данных в базе данных в формате UTF-16 и при экспорте XML-данных для клиентов.

Если необходимо применять другую схему кодирования, вот что можно задать с помощью запросов FOR XML.

  • Свойство Кодирование вывода объекта потока XML-данных Response на страницах активного сервера (ASP).

    Например, следующий ASP-код предписывает обозревателю отобразить входящий поток XML-данных в формате UCS-2:

    <% cmdXML.Properties("Output Encoding") = "UCS-2" %>
    
  • Схему кодирования вывода в URL-адресе при выполнении HTTP-запроса.

    Следующий пример задает 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-странице.

При вставке данных в базу данных SQL Server с помощью выражения OPENXML следует указывать типы данных Юникода во всех частях набора строк, где могут выводиться данные на нескольких языках. Это минимизирует искажение символов.

См. также

Справочник