【问题标题】:TSQL FOR XML Exporting ACTUAL UTF-8 Encoded dataTSQL FOR XML 导出实际的 UTF-8 编码数据
【发布时间】:2015-10-06 21:24:10
【问题描述】:

我们有一个编写 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')

输出结果是:Diversity® Certified

应该是:Diversity® 认证

并且正在使用 SQLCMD。我知道内部 XML 存储为 UCS-2(?),但我需要一种方法将输出作为 UTF-8 编码数据(不仅仅是 8 位)。

我也不能使用我见过的 BCP 技巧。

我不想使用 CDATA 标记,因为这将需要重新创建一个巨大的丑陋查询。

我在网上找到的所有内容都没有编码高 ascii 字符。

这是在 SQL Server 2008 R2 上运行的。

【问题讨论】:

    标签: sql-server tsql encoding utf-8 ssis


    【解决方案1】:

    我想我所要做的就是询问,然后我会找到自己的答案:问题不在于 SQL,而在于 SSIS 的下游。我根据另一个线程中的答案将 CONVERT 的代码页以及最终的文本文件更改为 65001:

    ...虽然违反直觉,但解决方法很简单 - 在 OLE DB 源和平面文件目标之间添加一个数据转换转换步骤,将您的输入“Dat”列从 DT_NTEXT 转换为 DT_TEXT,代码页为 65001。然后你将新转换的列直接提供给平面文件 dest 中的输出列。 ...问候,雅各布

    http://www.sqlservercentral.com/Forums/Topic719421-149-1.aspx

    【讨论】:

      猜你喜欢
      • 2012-11-07
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2010-10-26
      • 2011-05-09
      相关资源
      最近更新 更多