【问题标题】:Mule ESB execute script from Groovy with unicode paramsMule ESB 使用 unicode 参数从 Groovy 执行脚本
【发布时间】:2013-11-12 10:03:47
【问题描述】:

我的 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 组件时,将 unicode 输出到 Mule 日志没有问题。同样在 SMTP 组件中,一切都很完美:我成功地收到了来自 Mule 的 unicode 信件。

你能用 Groovy 命令调用帮助我处理 Mule ESB 中的 unicode 参数吗?

【问题讨论】:

  • 在命令行中运行locale 会显示您机器的区域设置是什么?
  • $ locale LANG="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_CTYPE="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_ALL=
  • 你的 Mule 脚本顶部有 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
  • 是的,当然。我有与stackoverflow.com/questions/19924084/… 中描述的相同的项目
  • 然后我被难住了...运行(在 Mule 之外)一个时髦的脚本 def s = "Получена заявка ##[sessionVars['ticketID']]" ; [ '/tmp/call.sh', s ].execute() 对我有用...

标签: unicode groovy mule


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2019-01-26
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多