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

Character encoding \377\376附加到文件(Windows->;Unix),character-encoding,ssis,solaris,dos2unix,Character Encoding,Ssis,Solaris,Dos2unix,早上好- 我有一个问题,解决方案已经暗示了我几天了 我有一个执行以下操作的SSIS包。 1.运行SQL脚本 2.将结果导出到平面文件(UTF-8编码、定界和\n新行) 3.将结果FTP到solaris计算机(二进制格式) 问题是,当文件显示在我的solaris设备上时,文件的开头有以下内容 \377\376 我已经尝试过dos2unix,但仍然没有纠正这个问题。事实上,它将\377\376更改为\227\226,这没有多大帮助 我的问题是,有没有办法从我的文件中删除这些字符?当他们在那里时,他们

早上好-

我有一个问题,解决方案已经暗示了我几天了

我有一个执行以下操作的SSIS包。 1.运行SQL脚本 2.将结果导出到平面文件(UTF-8编码、定界和\n新行) 3.将结果FTP到solaris计算机(二进制格式)

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

\377\376

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

我的问题是,有没有办法从我的文件中删除这些字符?当他们在那里时,他们会弄乱grep和其他unix工具,比如head

感谢您的帮助


谢谢

这是一个简单的解决办法,我好几天都没想到。我想我会回答我自己的问题,以防有人在寻找答案

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

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

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

  • 删除ms添加到留置权末尾的回车符

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


  • 这将解决您的问题。

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


    有一个Windows版本可用。

    正如预览答案所述,使用make the job,在我的情况下,我使用:

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

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

    -v、 --详细操作

    -f、 --二进制文件的强制转换

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


    字符被删除了

    这是一个utf-16-le BOM(),请查看导出选项,看看是否可以省略BOM或在solaris上使用BOM感知查看器?这是一个Unicode字节顺序标记。看起来你的输出毕竟不是UTF-8。谢谢,我现在知道从哪里开始寻找了。我将看看将输出编码更改为US-ASCII是否有帮助(我知道输入中没有特殊字符)。