XML 데이터와 함께 유니코드 사용
SQL Server에서는 UTF-16 인코딩 체계를 사용하여 XML 데이터를 저장합니다. UTF-16 데이터는 가변 폭 데이터이기 때문에 바이트 기반 프로토콜에 따라 처리됩니다. 다시 말해 UTF-16 데이터는 여러 컴퓨터의 바이트 순서에 독립적인 방법(Little Endian 및 Big Endian)으로 처리될 수 있습니다. 따라서 UTF-16는 서로 다른 인코딩 및 바이트 순서 지정 방식을 사용하는 여러 컴퓨터 간에 데이터를 전송하는 데 적합합니다. 일반적으로 XML 데이터는 네트워크상에서 광범위하게 공유되므로 데이터베이스에서 XML 데이터의 기본 UTF-16 저장소를 유지 관리하고 XML 데이터를 클라이언트로 내보내는 데 사용하는 것이 바람직합니다.
다른 인코딩 방식을 지정해야 하는 경우에는 FOR XML 요청을 사용하여 다음을 지정할 수 있습니다.
ASP(Active Server Pages)에서 XML 형식의 데이터 스트림 Response 개체의 Output Encoding 속성
예를 들어 다음 ASP 코드는 들어오는 XML 데이터 스트림을 브라우저에 UCS-2로 표시하도록 합니다.
<% cmdXML.Properties("Output Encoding") = "UCS-2" %>
HTTP 요청을 만들 때 URL의 출력 인코딩
다음 예에서는 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 페이지에서 Output Encoding 속성을 지정하면 이 두 가지 인코딩이 모두 무시됩니다.
OPENXML을 사용하여 SQL Server 데이터베이스에 데이터를 삽입하는 경우 행 집합에서 다국어 데이터가 표시될 수 있는 곳에는 유니코드 데이터 형식을 지정해야 문자가 손상되는 것을 최소화할 수 있습니다.