【发布时间】:2021-05-26 20:30:46
【问题描述】:
是否有一个选项可以在接收到侦听器的 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 variable 组件上设置编码(如下 sn-p 所示),但这并没有改变任何东西。
<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"/>
如何处理正确编码的入站文件数据? 感谢所有有效的答案。
【问题讨论】:
-
您可以尝试在 dataweave 中将编码设置为 'UTF-16',在其中您尝试提取 'qualifyResult'.content 值。例如,您在转换组件中的标题部分看起来像这样 --> %dw 2.0 output application/json encoding="UTF-16"
-
谢谢@TheOtherGuy,这个已经试过了,没用
output application/json encoding="UTF-16"
标签: encoding mule multipartform-data dataweave mule4