WCF /.NET - Фильтровать символы, не поддерживаемые кодировкой устаревшей целевой системы - PullRequest
0 голосов
/ 10 марта 2020

Нам приходится иметь дело с унаследованной системой, которая имеет другую ограниченную кодировку ( CCSID 1148 ) от нашей. NET основной системы, которая поддерживает UTF-8 / UTF-16 .
Основная система общается с устаревшей системой, используя WCF с веб-службой; логика c того, что происходит за веб-службой, не может быть изменена, поскольку она обрабатывается службой транзакций, и мы обычно видим, что неподдерживаемый символ, содержащийся, например, в строке, хранится в целевой системе и заменяется SUB-символ (x001A) .
Это поведение подстановки - то, что IBM называет " Принудительное преобразование подмножества ".
В этом случае SUB-символ является проблемой, поскольку он не является допустимым символом в XML и не могут быть прочитаны другими системами.

Что мы можем сделать, это отфильтровать и очистить строки объекта. NET, переданного в WCF перед вызовом; Объект. NET может быть сложным объектом с несколькими вложенными уровнями.
Одна из стратегий может заключаться в сериализации объекта в XML, замене неподдерживаемых символов в прежней системе и сериализации обратно в. NET возражать и вызывать веб-сервис; это может работать, но это означает некоторые накладные расходы при вызове Другим решением было бы расширить набор данных WCF XML1.0, удалив оскорбительные символы каким-либо образом.

Есть ли у вас какая-либо другая стратегия для обработки подобного сценария?

...