0

我们必须处理与支持UTF-8/UTF-16的 .NET 主系统具有不同受限字符集 ( CCSID 1148 ) 的遗留系统。 主系统使用带有 Web 服务的 WCF 与遗留系统对话;Web服务背后发生的逻辑无法修改,因为它是由事务服务处理的,我们通常看到的是,例如String中包含的不受支持的字符存储在目标系统中,替换为SUB字符( x001A)。 这种替换行为就是 IBM 所说的“强制子集转换”。 SUB 字符就是一个问题,因为它不是 XML 中的有效字符,并且它不能被其他系统读回。


我们可以做的是在调用之前过滤和清理传递给 WCF 的 .NET 对象的字符串;.NET 对象可能是具有多个嵌套级别的复杂对象。
一种策略是将对象序列化为 XML,替换遗留系统上不支持的字符,序列化回 .NET 对象并调用 Web 服务;这可能有效,但这意味着通话中有一些开销。另一种解决方案是扩展 WCF XML1.0 数据合同,以某种方式删除有问题的字符。

您还有其他策略来处理这种情况吗?

4

0 回答 0