0

私の 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 文字に問題はありません。

/tmp/groovy.out を HEX エディターでチェックすると、すべての Russain 文字の長さが 1 バイト (Unicode では 2 バイトの長さでなければならない) であることがわかります。つまり、Groovy コンポーネントの出力は Unicode ではありません。

Echo および Logger コンポーネントを使用している場合、Mule ログへの Unicode 出力に問題はありません。また、SMTP コンポーネントではすべてが完璧です。Mule から Unicode の文字を正常に受信しました。

Groovy コマンド呼び出しを使用した Mule ESB の Unicode 引数について教えてください。

4

1 に答える 1