Groovy脚本无法识别输出中的特殊字符

2020-09-09 06:59发布

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

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


大家好,我有一个字符串"Jamesàèø",我想为每个特殊字符分配一个值,并将其替换为该值。

期望的O/p = JamesKP

但是CPI中的常规脚本不能替代它们。 相反,它附加了它们,甚至不认识它们。

脚本

String formatSpecialChars(String stringToBeFormatted){

列表 emptyValueReplacements = ['¨','ø']

映射emptyStringMap = [:]

emptyValueReplacements.each {it->

emptyStringMap [it] =''}映射otherStringReplacements = [''':'K','è':'P'] + emptyStringMap

otherStringReplacements.each {键,值->

stringToBeFormatted = stringToBeFormatted.replaceAll(key,value);

}

stringToBeFormatted}

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

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


大家好,我有一个字符串"Jamesàèø",我想为每个特殊字符分配一个值,并将其替换为该值。

期望的O/p = JamesKP

但是CPI中的常规脚本不能替代它们。 相反,它附加了它们,甚至不认识它们。

脚本

String formatSpecialChars(String stringToBeFormatted){

列表 emptyValueReplacements = ['¨','ø']

映射emptyStringMap = [:]

emptyValueReplacements.each {it->

emptyStringMap [it] =''}映射otherStringReplacements = [''':'K','è':'P'] + emptyStringMap

otherStringReplacements.each {键,值->

stringToBeFormatted = stringToBeFormatted.replaceAll(key,value);

}

stringToBeFormatted}

付费偷看设置
发送
2条回答
粗暴的香蕉
1楼 · 2020-09-09 07:33.采纳回答

嗨,Sruthi,

您是否尝试过将Unicode字符转义为字符,而不是如下所述的实际字符?

http://groovy-lang.org/syntax.html#_unicode_escape_sequence

最诚挚的问候,
Ivan

亦是此间程序员
2楼-- · 2020-09-09 07:28

嗨,Sruthi,

可能无法更改Groovy解释Unicode字符的方式。 我相信这将需要在工具启动本身中设置环境变量(当前不支持AFAIK)。 为此,我知道所有客户都需要此设置,因为正确阅读脚本也需要此设置。 默认情况下,脚本使用扩展的ANSI字符集存储在文件系统中。 对于语言本身,这个ANSI集应该足够了。 因此,这就是处理特殊字符时必须使用Unicode转义序列存储特殊字符的原因。

另一方面,在我看来,您正在使用Groovy脚本处理特定文件或有效负载的编码/解码。 我相信您可以使用适配器设置来告知编码,而不是通过这种方式进行编码,以便将数据解释为已经解释为有效负载的脚本中的数据。

但是,如果这对于SCI是绝对必需的 而不是建议您定义unicode序列图。 然后,您可以用unicode转义序列替换人类可读字符串中的每个字符。

希望此信息有所帮助。

最好的问候,
Ivan

一周热门 更多>