[英]Java Component in Mule does not use project's UTF-8 encoding
我在Mule中有一個Java組件正在返回一個字符串。 當我從java組件中打印該字符串時,它在控制台中讀為UTF-8就可以了。 但是,當我將其作為有效載荷返回時,后續的記錄器和所有下游組件不再能夠讀取UTF-8字符。 我已經確認我的項目的編碼設置設置為'UTF-8'。 我也:
MULE_ENCODING=UTF-8
設置為出站屬性和調用屬性。 message.setEncoding('UTF-8')
失敗message.setEncoding('UTF-8')
帶有錯誤,指出無法找到方法setEncoding()
在Java組件中使用以下代碼:
eventContext.getMessage().setPayload(myString); eventContext.getMessage().setEncoding("UTF-8"); return eventContext.getMessage().getPayload();
使用變壓器上的以下配置,切換到Java變壓器而不是組件,將編碼明確設置為“ UTF-8”。
<custom-transformer encoding="UTF-8" class="myDomain.myJavaTransformer" doc:name="Java"/>
我不確定還有什么嘗試可以確保從Java組件/變壓器發出的有效載荷不會被解釋或轉換為其他編碼...
輸出應為:“傑出的新環境科學家”
記錄器當前輸出的是“傑出新環境科學家”。 我已經在流程的其他部分糾正了此問題,例如,向任何VM端點添加了encoding = UTF-8。 我也已經確認可以在流程中其他地方的記錄器中正確打印。
從Java組件引用的java類和后續的Mule logger中返回String后,似乎發生了某些事情。
在您的Java組件之后嘗試<object-to-string-transformer encoding="..." />
我也有編碼問題。 它與您的案件並不完全相似,但我采取了這項措施,對我來說很有用。 (使用Java序列化到數組的字節)
<set-property propertyName="MULE_ENCODING" value="UTF-8" doc:name="Property" />
<byte-array-to-string-transformer encoding="UTF-8" doc:name="Byte Array to String"/>
當消息傳到我的流中時,我就使用了它。
包裝器中也有屬性,您也可以進行設置。
您如何閱讀RSS提要? 如果使用端點,請嘗試為該端點設置'encoding'屬性?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.