我们有一个写入XML的过程(使用SQL的FOR XML)。当它通过SQLCMD在批处理文件中执行时,输出采用UTF-8格式(具体而言,8位ASCII字符变为2个字节)。 当我通过SSIS中的Execute SQL Command执行相同的操作时,它不是UTF-8编码。用于XML的TSQL导出实际的UTF-8编码数据
下面是一个简单的例子。的®应该成为2个字节:
SELECT 'Diversity® Certified' as fldAgentLastName
FOR XML PATH('agent'), ELEMENTS, TYPE, ROOT('agents')
的输出是:Diversity®认证
它应该是:Diversity®认证
并使用SQLCMD。我知道内部XML存储为UCS-2(?),但我需要一种方法来获得输出为UTF-8编码数据(不只是8位)。
我也不能使用我见过的BCP技巧。
我不想使用CDATA标记,因为那需要重新创建一个巨大的丑陋查询。
我在网上找到的所有东西都不会编码高ascii字符。
这是在SQL Server 2008 R2上运行的。