[英]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
output application/json
---
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.