我的 Mule ESB 项目中有这个小组件链:
<set-payload value="Получена заявка ##[sessionVars['ticketID']]" doc:name="Set SMS Text"/>
<scripting:transformer doc:name="Send SMS" ignoreBadInput="true">
<scripting:script engine="Groovy"><![CDATA[
def command = ["/tmp/call.sh", message.payload]
def proc = command.execute()
proc.waitFor()
]]></scripting:script>
</scripting:transformer>
和 /tmp/call.sh 清单:
#!/bin/bash
echo $@ > /tmp/call.out
当消息通过 /tmp/call.out 中的 Mule 链时,我可以看到“Џолучена заЯвка #4041”而不是预期的“Получена заявка #4041”(“Получена заявка” - 俄语单词),即 unicode 字符输出有问题ASCII 字符没有问题。
当我使用 HEX 编辑器检查 /tmp/groovy.out 时,我看到所有 Russain 字符都有 1 字节长度(在 unicode 中必须是 2 字节长度),即我的 Groovy 组件的输出不是 unicode。
当我使用 Echo 和 Logger 组件时,Mule 日志的 unicode 输出没有问题。同样在 SMTP 组件中,一切都很完美:我成功地收到了来自 Mule 的 unicode 信件。
你能用 Groovy 命令调用帮助我处理 Mule ESB 中的 unicode 参数吗?