簡體   English   中英

在 Mule4 中無法識別 DataWeave Multipart/form-data 輸入編碼

[英]DataWeave Multipart/form-data input encoding not recognized in Mule4

是否可以選擇在接收到偵聽器的 multipart/form-data 中按部分設置編碼?

我有這種多部分要接收:

----------------------------180928595588258919887097
Content-Disposition: form-data; name="qualifyResult"; filename="json1.json"
Content-Type: application/json

{
    "json1": "1"
}

----------------------------180928595588258919887097
Content-Disposition: form-data; name="raceOneResult"; filename="json2.json"
Content-Type: application/json

{
    "json2": "2"
}

----------------------------180928595588258919887097--

JSON 文件都是 UTF-16 格式,所以當我嘗試將文件數據存儲到變量時 - 使用以下 DataWeave 腳本:

%dw 2.0
output application/json
---
payload.parts.'qualifyResult'.content

它返回這種錯誤:

org.mule.runtime.core.api.expression.ExpressionRuntimeException: "Unexpected character 'ÿ' at qualifyResult@[1:1] (line:column), expected false or true or null or {...} or [...] or number but was , while reading `qualifyResult` as Json.
 
1| 
   ^" evaluating expression: "%dw 2.0

output application/json

---

payload.parts.'qualifyResult'.content".

所以我認為 DataWeave 只是嘗試使用 UTF-8 編碼而不是 UTF-16 來讀取數據。 我還嘗試在使用 DataWeave 的Set 變量組件上設置編碼(如下面的代碼片段所示),但這並沒有改變任何東西。

<set-variable value="#[%dw 2.0
&#10;output application/json
&#10;---
&#10;payload.parts.'qualifyResult'.content]" doc:name="qualifyResult" doc:id="34800576-0539-4f95-8977-8353a255d83d" variableName="qualifyResult" encoding="UTF-16"/>

如何以正確的編碼處理入站文件數據? 感謝所有有效的答案。

編碼看起來沒有問題。 從錯誤中提到的字符ÿ看來,它是數據開頭的字節順序標記 (BOM)的一部分,以指示 UTF 編碼。 DataWeave 目前不支持 BOM 並認為它是垃圾,因此會引發錯誤。 如果您無法避免該有效負載與 BOM 一起發送,您可能需要一些 Java 方法或腳本將其刪除,然后再嘗試使用 DataWeave 對其進行解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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