\ 377 \ 376附加到文件(Windows - > Unix)

时间:2012-09-17 15:21:00

标签: character-encoding ssis solaris dos2unix

早上全部 -

我遇到了问题,解决方案现在已经提到了我几天。

我有一个执行以下操作的SSIS包。  1.运行SQL脚本  2.将结果导出为平面文件(UTF-8编码,;分隔,和\ n表示新行)  3. FTP结果到solaris机器(二进制格式)

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

  

\ 377 \ 376

我尝试过dos2unix但仍未纠正此问题。事实上它将\ 377 \ 376改为\ 227 \ 226,不是很有用。

我的问题,是否可以从我的文件中删除这些字符?当他们在那里他们混乱grep和其他unix工具,如头。

感谢任何帮助。

由于

3 个答案:

答案 0 :(得分: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 outputfile

  3. 这将解决您的问题。

答案 1 :(得分:0)

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

有一个Windows版本。

答案 2 :(得分:0)

正如预览答案所述,使用dos2unix完成了这项工作,在我的情况下,我使用了:

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

其中:

  

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

     

-v, - verbose verbose operation

     

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

     

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

BOM字符已删除