Mule Groovy字符串替换负载包含问号

Mule Groovy字符串替换负载包含问号,groovy,utf-8,mule,anypoint-studio,Groovy,Utf 8,Mule,Anypoint Studio,通过上面的示例代码,我得到的有效负载结果中有很多问号: 示例有效载荷: String header = "EXL=TST+​[Placeholder1]​+[Placeholder2]+[Placeholder3]​:[Placeholder2]​" header = header.replaceAll("\\[Placeholder1\\]", escapeEdi((String)${propertyVal1})) header = header.replaceAll("\\[Placeho

通过上面的示例代码,我得到的有效负载结果中有很多问号:

示例有效载荷:

String header = "EXL=TST+​[Placeholder1]​+[Placeholder2]+[Placeholder3]​:[Placeholder2]​"

header = header.replaceAll("\\[Placeholder1\\]", escapeEdi((String)${propertyVal1}))
header = header.replaceAll("\\[Placeholder2\\]", escapeEdi((String)${propertyVal2}))
header = header.replaceAll("\\[Placeholder3\\]", escapeEdi((String)${propertyVal3}))

println(header)

String escapeEdi(String target){
    StringBuilder result = new StringBuilder();
    for(char c : target.toCharArray()){
        switch(c){
            case '+':
            case ':':
            case '\'':
            case '?':
                result.append("?");
            default:
                result.append(c);
        }
    }
    return result.toString();
}
即使删除escapeEdi函数,也会得到完全相同的结果。我甚至不确定是否需要转义edi,坦率地说,传递的值都没有这样的字符,纯粹是字母数字

由于?的原因,它导致消息以UTF-8-BOM发送,而它们的端部并不是设计用来处理它的,这意味着它必须在我的端部被清除和删除。我怎样才能摆脱这些

带有空字符串的简单replaceAll无效。 在结果结束时尝试转义eedi()也没有任何效果,我有一个与此非常类似的脚本,它工作得很好,没有包含愚蠢的字符。是什么导致了这个问题?

有趣的事情)

下面的代码

EXL=TST+​1+?1234?+1234+123?:123?+?1-1-170101?++?TEST?'
产生

String header = "EXL=TST+​[Placeholder1]​+xxx"
header = header.replaceAll("\\[Placeholder1\\]", "val1")
println header
最后,我发现在您的源字符串中,uni-code值(8203)在
[]
前后有一个奇怪的空格

的确如此

请参见绿色屏幕截图上的:


即使只是尝试单独打印带有占位符的字符串,似乎也会让我产生这些问题“?”是否有特定字符可能导致这种情况?所需的输出是什么?我在阅读此内容之前发现了一个困难的方法,最后用?s复制整个结果,用空字符串替换?s,然后把它们插回去让它工作。真的做得很好,而且发现得很漂亮-那是记事本++?你们是如何让它们显示出来的呢?是的,这是记事本++屏幕/但我在“远管理器编辑器”中检测到了符号。通常当关于真实字符和字节的问题-这对我来说是最好的=)
EXL=TST+?val1?+xxx