3

我有一个执行以下操作的 SSIS 包。

  1. 运行 SQL 脚本
  2. 将结果导出到平面文件(UTF-8 编码,; 分隔,和 \n 用于新行)
  3. FTP结果到solaris机器(二进制格式)

问题是,当文件显示在我的 solaris 盒子上时,文件开头有以下内容。

\377\376

我已经尝试过dos2unix,但仍然没有纠正这个问题。事实上,它将\377\376 更改为\227\226,不是很有帮助。

我的问题,有什么方法可以从我的文件中删除这些字符?当他们在那里时,他们会使用 grep 和其他 unix 工具,如 head。

4

3 回答 3

3

默认情况下,任何 SSIS 或 windows 编码文件都是 UCS-2-LITTLE-ENDIAN 编码的。最简单的方法是使用以下命令在您的 unix 服务器上对文件进行编码。

  1. 使用 iconv 切换到 UTF-8(或您需要的任何编码)

    iconv -f UCS-2-LITTLE-EDIAN -t UTF-8 输入 > 输出

  2. 删除 ms 添加到留置权末尾的回车。

    unix2dos -ascii utf-8-file 输出文件

于 2012-09-20T13:28:30.867 回答
0

Dos2unix 6.0 及更高版本可以将 Windows Unicode UTF-16 文件转换为 Unix UTF-8。它还将删除字节顺序标记 (BOM)。在此处获取最新的 dos2unix

有可用的 Windows 版本。

于 2012-12-23T09:15:10.447 回答
0

正如预览答案所述,使用dos2unix完成了这项工作,就我而言,我使用了:

dos2unix.exe -r -v -f -D utf8 <FileName>

其中:

-r, --remove-bom 删除字节顺序标记(默认)

-v, --verbose 详细操作

-f, --force 强制转换二进制文件

-D, --display-enc 设置显示文本信息编码 ansi, unicode, utf8, 默认为ansi

并且删除了BOM字符

于 2017-06-08T16:21:23.840 回答