HCI-将字节顺序标记(BOM)添加到UTF-8文件内容

2020-08-16 03:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家

我正在尝试通过Groovy脚本将BOM(字节顺序标记)字符添加到UTF-8文件内容中,同时将文件发送给第三方SFTP服务器。

  • 添加了以UTF-8作为标题参数的CamelCharsetName

  • 在Groovy脚本中,尝试在BOM表中添加有效负载内容
 import com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;

 def消息processData(消息消息){
            
         地图headerMap = message.getHeaders();
         def有效负载= message.getBody(java.lang.String);
         String bom = new String(" \ u00EF \ u00BB \ u00BF"); //" 0xEF,0xBB,0xBF";
                
        //将ByteOrderMark添加到有效负载
         有效载荷= bom +有效载荷;
         message.setBody(payload);
    
 返回消息;
 } 

在目标上创建的文件没有正确的BOM字符,并且目标失败。 当使用Hex编辑器检查目标文件时,我们可以清楚地看到BOM表不正确(Groovy控制台中的同一代码正在创建正确的BOM表,因此Notepad和Notepad ++等编辑器可以正确识别为带有BOM表的UTF-8)。 p> 在-十六进制-模式

src="/storage/temp/5032-correctbom.jpg">

在-正常-模式

< p>

- HEX 中错误的BOM(由HCI通过Groovy生产)- -模式

任何人都遇到过类似的问题,并找到了解决该问题的方法 ?

提前谢谢。

南纳·辛纳拉杰

camelcharset.jpg (50.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家

我正在尝试通过Groovy脚本将BOM(字节顺序标记)字符添加到UTF-8文件内容中,同时将文件发送给第三方SFTP服务器。

  • 添加了以UTF-8作为标题参数的CamelCharsetName

  • 在Groovy脚本中,尝试在BOM表中添加有效负载内容
 import com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;

 def消息processData(消息消息){
            
         地图headerMap = message.getHeaders();
         def有效负载= message.getBody(java.lang.String);
         String bom = new String(" \ u00EF \ u00BB \ u00BF"); //" 0xEF,0xBB,0xBF";
                
        //将ByteOrderMark添加到有效负载
         有效载荷= bom +有效载荷;
         message.setBody(payload);
    
 返回消息;
 } 

在目标上创建的文件没有正确的BOM字符,并且目标失败。 当使用Hex编辑器检查目标文件时,我们可以清楚地看到BOM表不正确(Groovy控制台中的同一代码正在创建正确的BOM表,因此Notepad和Notepad ++等编辑器可以正确识别为带有BOM表的UTF-8)。 p> 在-十六进制-模式

src="/storage/temp/5032-correctbom.jpg">

在-正常-模式

< p>

- HEX 中错误的BOM(由HCI通过Groovy生产)- -模式

任何人都遇到过类似的问题,并找到了解决该问题的方法 ?

提前谢谢。

南纳·辛纳拉杰

camelcharset.jpg (50.0 kB)
付费偷看设置
发送
3条回答
落灬小鱼
1楼 · 2020-08-16 04:13.采纳回答

大家好,

经过反复试验,以下代码对我有用。

 def消息processData(消息消息){
            
         地图headerMap = message.getHeaders();
         def payload = message.getBody(java.lang.String)as String;
       
         字符串charset =" utf-8";
         字节[] BOM = [0xEF,0xBB,0xBF];
        
         字符串byteordermark =新字符串(BOM,字符集);
         字符串s1 =新字符串(payload.decodeBase64(),字符集); //有效负载以Base64格式编码
         字符串s2 =新字符串(BOM,字符集)+ s1;
        
         message.setBody(s2);

 } 

谢谢

Ananth

能不能别闹
2楼-- · 2020-08-16 04:34

你好

并且如果我想在输入文件为UTF8BOM时从文件中删除BOM? 脚本的外观如何?

宇峰Kouji
3楼-- · 2020-08-16 04:27

您好 ananth

该脚本无法正常工作。

谢谢

Rajat

一周热门 更多>