私の 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 引数について教えてください。