在Mule 4中将XML写入Oracle表时,如何强制执行编码格式?

在Mule 4中将XML写入Oracle表时,如何强制执行编码格式?,oracle,dataweave,mule4,xmltype,Oracle,Dataweave,Mule4,Xmltype,当我将XML写入Oracle表(列类型为XMLTYPE)时,它的写入没有显示任何编码类型。这是一个通过Java实现的当前流程。我们正在将此过程迁移到Mule。在Mule中,xml正在写入同一个表中,但在写入之后,我看到了该xml中的编码格式。不知道它是怎么来的,它不是真正的xml 使用Java插入时表中的XML <?xml version="1.0"?> 这是我的插入语句 insert into xmlpkg.REQ_RESP (ID, REQUEST_XML)

当我将XML写入Oracle表(列类型为XMLTYPE)时,它的写入没有显示任何编码类型。这是一个通过Java实现的当前流程。我们正在将此过程迁移到Mule。在Mule中,xml正在写入同一个表中,但在写入之后,我看到了该xml中的编码格式。不知道它是怎么来的,它不是真正的xml

使用Java插入时表中的XML

<?xml version="1.0"?>
这是我的插入语句

insert into xmlpkg.REQ_RESP (ID, REQUEST_XML) values (xmlpkg.SEQ_DV.nextval,   
:REQUEST_XML  )
我在我的输入参数中给出了以下内容

{
'REQUEST_XML'  : write(payload, 'application/xml')
}
我的有效负载是一个xml,但它将以文本形式出现,我无法更改它

<DRIVERequest Version="1.00">
<Authentication PortalID="*****" Password="*******" Username="*******"/>
</DRIVERequest>
在输入参数中,我认为如下所示

{
'REQUEST_XML': payload.requestXML
}

在日志中,我看到的是UTF-8,但在插入操作之后,它显示为encoding=“US-ASCII”

似乎不是Mule,而是Oracle JDBC驱动程序在某个地方发现了错误的编码

可能的解决办法:

  • 确保您使用的是最新的JDBC驱动程序
  • 搜索操作系统中可能设置了错误编码的任何环境变量。例如NLS_LANG(参见)
  • 或者,尝试显式设置NLS_LANG以避免任何错误的默认值
  • 最后,阅读Oracle文档,了解可能影响驱动程序的其他类似配置

  • 看起来不是Mule,而是oraclejdbc驱动程序在某处发现了错误的编码

    可能的解决办法:

  • 确保您使用的是最新的JDBC驱动程序
  • 搜索操作系统中可能设置了错误编码的任何环境变量。例如NLS_LANG(参见)
  • 或者,尝试显式设置NLS_LANG以避免任何错误的默认值
  • 最后,阅读Oracle文档,了解可能影响驱动程序的其他类似配置


  • 有效载荷是多少?请共享实际的数据库连接器操作并完成DataWeave转换。使用更多信息更新了问题。请在数据库操作之前执行转换并将其分配给变量,以便您可以在此处记录并共享结果。更新了信息。同样是插入xml,但为什么编码会消失?在插入操作后,如何检查
    “它显示为encoding=“US-ASCII”“
    ?有效载荷是多少?请共享实际的数据库连接器操作并完成DataWeave转换。使用更多信息更新了问题。请在数据库操作之前执行转换并将其分配给变量,以便您可以在此处记录并共享结果。更新了信息。同样是插入xml,但为什么编码会消失?在插入操作后,如何检查
    “它显示为encoding=“US-ASCII”“
    ?@Vinoy成功了吗?没有,尝试更新最新版本的JDBC驱动程序。显式设置NLS_LANG。但是什么也没用。仍然在研究使它按照这个链接工作@Vinoy成功了吗?没有,尝试更新最新版本的JDBC驱动程序。显式设置NLS_LANG。但是什么也没用。仍然在研究使它按照这个链接工作。
    <DRIVERequest Version="1.00">
    <Authentication PortalID="*****" Password="*******" Username="*******"/>
    </DRIVERequest>
    
    Before DB operation : "<?xml version='1.0' encoding='UTF-8'?>\n<DRIVERequest 
    Version=\"1.00\">\n  <Authentication PortalID=\"*****\" Password=\"*******\" 
    Username=\"*******\"/>\n</DRIVERequest>"
    
    %dw 2.0
    output application/json
    ---
    {
    requestXML : write(payload, 'application/xml')
    }
    
    {
    'REQUEST_XML': payload.requestXML
    }