C# SSI使用C将.raw或.txt文件从ANSI编码为UTF-8,而不使用BOM#
我正在开发一个相当简单的SSIS包,它使用ODBC源代码从DB2读取数据,并将其带到平面文件目标。但是我需要生成的这个文件是UTF-8(没有BOM),而不是ANSI,因为它是由SSIS自动生成的。最适合我的是下面的代码,但它将其转换为UTF-8 BOM,客户告诉我带有BOM的文件不适合他。有没有办法把文件改成UTF-8C# SSI使用C将.raw或.txt文件从ANSI编码为UTF-8,而不使用BOM#,c#,utf-8,ssis,C#,Utf 8,Ssis,我正在开发一个相当简单的SSIS包,它使用ODBC源代码从DB2读取数据,并将其带到平面文件目标。但是我需要生成的这个文件是UTF-8(没有BOM),而不是ANSI,因为它是由SSIS自动生成的。最适合我的是下面的代码,但它将其转换为UTF-8 BOM,客户告诉我带有BOM的文件不适合他。有没有办法把文件改成UTF-8 string srcFilename = Dts.Variables["User::FFDestPath"].Value.ToString(); string
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);
编辑:
对于在SSI中本机写入,请在平面文件连接管理器中指定代码页为65001(UTF-8) 平面文件目标写入文件时,不会写入BOM表
您似乎没有使用
utf8WithoutBom
来实际创建文件?@stuartd Hi,这一行用于不使用BOM。好的,但是您编写了文件,然后创建utf8WithoutBom
,但您没有使用它?你期望它做什么?我对C#比较陌生,还在学习。您建议我如何改进该代码以实现我所需的功能?关于File.WriteAllText(srcFilename,text,utf8,不带BOM)
?谢谢您的帮助。当我在记事本++中打开文件时,我的FF目的地看起来和那个完全一样,它是ANSI.Crazy-你能发布它的屏幕截图,这样我就可以尝试复制吗?“常规”选项卡+高级中的至少一列?哦,请确保平面文件目标指定覆盖,否则,如果构建了其他目标,则永远不会清除BOM表。