SSIS - ANSI平面文件始终保存为UTF-8(无BOM)

时间:2015-02-20 09:17:22

标签: sql-server utf-8 ssis character-encoding flat-file

我正面临SSIS的问题,客户希望以(在UTF-8中提供的文件)以ANSI-1252交付。我想没什么大不了的。更改文件连接管理器并完成...遗憾的是,它并非如此简单。被困在这一天并且对接下来的尝试毫无头绪。

包裹本身

Data flow overview

IN - 带查询的OLE DB源。源数据库字段是NVARCHAR。

Source Metadata

接下来我创建了一个数据转换块,我使用1252代码页将传入的DT_WSTR转换为DT_STR。

Conversion to 1252

MetaData after conversion

之后是出站文件连接目标。平面文件连接使用代码页1252以制表符分隔。我已将转换后的列映射到此平面文件中使用的列。以下是连接管理器和目标块的一些屏幕截图

Destination block general

Destination block mapping

Flat file connection manager 1

Flat file connection manager 2

Flat file connection manager 3

现在,当我从资源管理器创建一个新的txt文件时,它将是ANSI(由Notepad ++检测到)

manually created file

当包运行时,文件变为UTF-8,没有BOM

SSIS Output file

我已尝试使用SSIS - Flat file always ANSI never UTF-8 encoded

中建议的覆盖复选框进行试验

从头开始构建项目并尝试数据转换。

有没有人对我在这里缺少的东西有什么建议?奇怪的是我们有一个不同的包,其前面构建的块完全相同,并且它输出一个ANSI文件(从上到下检查包)。但是,我们在不同的机器上得到了不同的结果有些机器会提供其他UTF-8文件的ANSI文件。

1 个答案:

答案 0 :(得分:2)

这已经解决了吗?我的想法是删除整个数据流任务并重新创建它。我想每次执行都会卡住和覆盖元数据。

我相信您无需更改ssis包中的任何内容,只需检查您的编辑器设置(记事本++)。转到设置 - >偏好 - >新文件设定 您需要取消选中“应用于已打开的ANSI文件”复选框。 请检查并告诉我它是否适合您。