簡體   English   中英

Mule中的Java組件不使用項目的UTF-8編碼

[英]Java Component in Mule does not use project's UTF-8 encoding

我在Mule中有一個Java組件正在返回一個字符串。 當我從java組件中打印該字符串時,它在控制台中讀為UTF-8就可以了。 但是,當我將其作為有效載荷返回時,后續的記錄器和所有下游組件不再能夠讀取UTF-8字符。 我已經確認我的項目的編碼設置設置為'UTF-8'。 我也:

  1. 在Java組件之前和之后將MULE_ENCODING=UTF-8設置為出站屬性和調用屬性。
  2. 在m子表達式中設置消息的編碼,但是該message.setEncoding('UTF-8')失敗message.setEncoding('UTF-8')帶有錯誤,指出無法找到方法setEncoding()
  3. 在Java組件中使用以下代碼:

     eventContext.getMessage().setPayload(myString); eventContext.getMessage().setEncoding("UTF-8"); return eventContext.getMessage().getPayload(); 
  4. 使用變壓器上的以下配置,切換到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM