mule esb 中的输出编码问题

Output Encoding issue in mule esb

我曾经在 Mule ESB 中使用 "Transform Message" 节点创建 XML。

%dw 1.0 %输出application/xml

项目:{ 名称:payload."profile_name", id: payload."profile_Id" }

这显示了输出 xml 作为

的预览
<?xml version='1.0' encoding='windows-1252'?>
<item>
  <name>
    <profile_name>????</profile_name>
  </name>
  <id>
    <profile_Id>1</profile_Id>
  </id>
</item>

这导致编码为 'windows-1252' 我如何在输出 xml 中将编码更改为 'UTF-8'?

转到您的 Anypoint Studio 文件夹。

编辑AnypointStudio.ini

添加: -Dfile.encoding=UTF-8

重启

简单,在输出行中定义编码:

%dw 1.0
%output application/xml encoding="utf-8"
---
name: payload.name?

结果:

<?xml version='1.0' encoding='utf-8'?>
<name>false</name>

对于运行时高于 3.8.4 的数据编织,我实现了这个解决方案:

  1. 将输出设置为变量:

Output FlowVar - fv_itemName_xml

  1. 转换消息内部:

    '%output application/xml writeDeclaration=false

    item: { name: payload."profile_name", id: payload."profile_Id" }

输出将是:

<item>
  <name>
    <profile_name>????</profile_name>
  </name>
  <id>
    <profile_Id>1</profile_Id>
  </id>
</item>
  1. 然后定义一个变量如下:

    姓名:fv_outputName_xml

    值:#[flowVars.fv_itemName_xml]

    编码:ISO 10646/Unicode(UTF-8)

    Mime 类型:application/xml

并且您可以更好地控制编码和 Mime 类型。

在我的例子中,我需要将它输入到存储过程中,并且在没有这个解决方法的情况下不断收到错误:

System.Data.SqlClient.SqlException (0x80131904): XML parsing: line 1, character 39, unable to switch the encoding