【问题标题】:SSIS Encode a .raw or .txt file from ANSI to UTF-8 without BOM using C#SSIS 使用 C# 将 .raw 或 .txt 文件从 ANSI 编码为 UTF-8,无需 BOM
【发布时间】:2020-09-24 20:15:07
【问题描述】:

我正在开发一个相当简单的 SSIS 包,它使用 ODBC 源从 DB2 读取数据并将其带到平面文件目标。但我需要这个生成为 UTF-8(没有 BOM)而不是 ANSI 的文件,因为它是由 SSIS 自动生成的。最适合我的是下面的代码,但它将其转换为 UTF-8 BOM,并且客户端告诉我带有 BOM 的文件对他不起作用。有什么办法可以让文件变成UTF-8?

string srcFilename = Dts.Variables["User::FFDestPath"].Value.ToString();
string text = File.ReadAllText(srcFilename);
File.WriteAllText(srcFilename, text, System.Text.Encoding.UTF8);
Encoding utf8WithoutBom = new UTF8Encoding(false);

编辑:

【问题讨论】:

  • 您似乎并没有使用utf8WithoutBom 来实际创建文件?
  • @stuartd 嗨,该行是不使用 BOM 的。
  • 好的,但是你写文件,然后你创建utf8WithoutBom但你不使用它?你希望它做什么?
  • 我对 C# 比较陌生,还在学习。您建议我应该改进该代码以实现我的需要吗?
  • File.WriteAllText(srcFilename, text, utf8WithoutBom) 怎么样?

标签: c# utf-8 ssis


【解决方案1】:

要在 SSIS 中进行本机编写,请在平面文件连接管理器中指定代码页为 65001 (UTF-8)。

Flat File Destination 写入文件时,没有写入 BOM。

【讨论】:

  • 感谢您的帮助。当我在 Notepad++ 中打开文件时,我的 FF Destination 看起来与那个完全一样。
  • 疯了——你能把它的截图贴出来让我试试复制吗?常规选项卡 + 至少一列来自高级?哦,确保平面文件目标指定覆盖,否则它永远不会清除 BOM,如果它是另外构建的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2012-10-25
  • 2017-05-08
  • 2011-09-05
  • 2011-05-20
  • 2017-02-01
  • 1970-01-01
相关资源
最近更新 更多