Mule ESB使用unicode params从Groovy执行脚本

时间:2013-11-12 10:03:48

标签: unicode groovy mule

我的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参数吗?

1 个答案:

答案 0 :(得分:0)

通过在运行配置选项中选择UTF-8 ecoding解决(菜单运行 - &gt;运行配置...)。默认情况下,它是MacCyrilic编码。