SAP可以检测编码和行结尾吗?

时间:2016-09-28 06:45:29

标签: encoding ftp sap abap line-endings

如何在SAP中读取带有混合行结尾(Windows和Unix)和UTF-16 Big Endian文件的ASCII文件?

背景:我们的ABAP应用程序必须读取一些配置文件。其中大多数是ASCII文件(普通文本文件),其中一个是Unicode Big Endian。到目前为止,文件是使用ASCII模式读取的,在我们测试期间一切正常。

但是,客户发生了以下情况:配置文件位于Linux终端上,因此它具有Unix Line Endings。人们通过FTP或类似方法读取配置文件并将其传输到Windows机器。在Windows机器上,它们会调整一些设置。根据编辑的不同,我们的客户现在拥有混合线路结束。

在ABAP中以ASCII模式读取文件时,那些混合行结尾会导致麻烦。该文件被读取到行结尾更改加一点但不是整个文件的位置。

我建议以BINARY模式读取文件,删除所有CR,然后用CR LF替换所有剩余的LF。这很好 - 除了这种方法导致混乱的UTF-16 BE文件。所以整件事都被还原了。

我不是ABAP开发人员,我只需要对此进行测试。凭借我在其他编程语言中的背景,我必须假设有一个解决方案,我倾向于拒绝一个" CAN' FIX"解决了这个错误。

1 个答案:

答案 0 :(得分:1)

您可以使用CL_ABAP_FILE_UTILITIES=>CHECK_FOR_BOM来确定文件所具有的编码,然后使用类CL_ABAP_CHAR_UTILITIES的常量来进一步处理。