我们有一个编写XML的进程(使用SQL的FOR XML)。在批处理文件中通过SQLCMD执行时,输出为UTF-8格式(具体地说,8位ascii字符变为2字节)。当我通过在SSIS中执行SQL命令来做同样的事情时,它不是UTF-8编码的。
这里有一个简单的例子。®应变为2个字节:
SELECT 'Diversity® Certified' as fldAgentLastName
FOR XML PATH('agent'), ELEMENTS, TYPE, ROOT('agents')输出结果为:多样性®认证
应该是:多样性®认证
并使用SQLCMD。我知道XML在内部是以UCS-2(?)格式存储的,但我需要一种方法来获得UTF-8编码数据(而不仅仅是8位)的输出。
我也不能使用我见过的BCP技巧。
我不想使用CDATA标签,因为这将需要重新创建一个巨大的丑陋查询。
我在网上找到的所有东西都不是高位ascii字符。
它在SQL Server2008 R2上运行。
发布于 2015-10-07 06:26:30
我想我所要做的就是问一问,然后我会找到我自己的答案:问题不在SQL,而是在SSIS的下游。我在另一个线程中根据这个答案将转换和最终文本文件的代码页更改为65001:
...The解决方法很简单,尽管有点违反直觉-在OLE DB源和平面文件目标之间添加一个数据转换转换步骤,将输入的"Dat“列从DT_NTEXT转换为代码页为65001的DT_TEXT。然后,将新转换的列直接提供给平面文件dest中的输出列。..。你好,雅各布
http://www.sqlservercentral.com/Forums/Topic719421-149-1.aspx
https://stackoverflow.com/questions/32980009
复制相似问题