问题
water huang · 四月 21, 2021

EnsLib.EDI.XML.Document 中文乱码

我需要能修改xml 文件里面某个节点的值,目前 使用的方法是EnsLib.EDI.XML.Document 里面的SetValueAt,但是导入的字符串或者流有中文的话,或者设置新值包含中文的话,使用 OutputToString输出字符串,中文是乱码的,怎么处理呢

产品版本: Ensemble 2016.1
$ZV: Cache for Windows (x86-64) 2016.2.3 (Build 907_11_20446U) Thu Nov 12 2020 16:56:45 EST
0
0 64
讨论 (2)2
登录或注册以继续

听起来像编码的问题。OutputToString 可以指定字符集。比如:

set tSC=xmldoc.SetValueAt($C(36190),"orderperson","set","")
write xmldoc.OutputToString("C(utf-8)")

这个乱码的按照你说的,还是乱码,不过我换成了XMLExportToStream方法,解决问题,但是还有另外一个问题,比如 xml 里面 有一个节点是 <id root="5.1.1" extension="22a0f9e0-4454-11dc-a6be-3603d6866807"/>
,我需要修改extension的值,但是我使用 SetValueAt方法修改后 发现root不见了 也就是变成了<id extension="22a0f9e0-4454-11dc-a6b"/> 这样的,这不是我要的,我不得不在修改extension 前先处理好root,这个是bug吗?或者我怎么操作才能达到我需要的效果?