当我打开它时,我有一个看起来像这样的文件Notepad ++
A|B|C|D|Eഀ
31|HB|39|Ph|49ഀ
32|FB|38|Ph|59ഀ
当我尝试从WinScp打开它时,它看起来如下所示
ÿþA|B|C|D|E
31|HB|39|Ph|49
32|FB|38|Ph|59
我想在BPEL文件适配器中读取此文件。但我无法阅读它,因为{eol}不合适。而且我已经尝试过ഀ作为行尾而没有运气。
PFA
< http://i.stack.imgur.com/Rc8B8.png>
先谢谢,
阿布舍克巴克
答案 0 :(得分:0)
当您在此文件上运行od -c时(请参阅上面的评论),您找到了:
0000000 377 376 A \0 | \0 B \0 | \0 C \0 | \0 D \0
0000020 | \0 E \0 \r \n \0 \r \n \0 3 \0 1 \0 | \0
0000040 H \0 B \0 | \0 3 \0 9 \0 | \0 P \0 h \0
0000060 | \0 4 \0 9 \0 \r \n \0 \r \n \0 3 \0 2 \0
0000100 | \0 F \0 B \0 | \0 3 \0 8 \0 | \0 P \0
0000120 h \0 | \0 5 \0 9 \0 \r \n \0 \r \n \0
0000136
让我们从头开始。
你注意到前两个字节了吗?八进制377和376.别名0xFF 0xFE十六进制。这就是所谓的字节顺序标记(BOM)。它用于将信息“传递”到必须读取文件的应用程序(编码和字节序)。
现在,如果BOM为0xFF 0xFE,则表示该文件包含编码为UTF-16的Unicode字符。确切地说,它是Little Endian UTF-16编码文件(UTF-16LE)。
由于您的文件是UTF-16LE编码的......每个字符都需要两个字节:
到目前为止......太好了。问题是“\ r \ n”。如果文件编码为UTF-8 ,此序列将是通常的CR LF ,但BOM表示文件编码为UTF-16LE,因此......
你有“\ r \ n”而不是“\ r \ 0 \ n \ 0”的事实会混淆那些不知道如何使用UTF-16LE编码“解释”这些字节的应用程序。 UTF-16LE中的序列“\ r \ n”无效,应用程序使用两个“框”来表示这些无效字节。
要保持简短:您的文件编码错误(一半UTF-16LE和一半UTF-8)。我猜有人确实使用记事本或类似的东西来改变其内容。
您可以尝试使用iconv和/或sed进行修复。