Странное взаимодействие между jdom и ssis - PullRequest
0 голосов
/ 07 октября 2011

Прошу прощения за длинный пост, но эту проблему нелегко сформулировать.

Недавно я написал кусок Java для перенастройки некоторых пакетов служб SSIS для коллеги, используя jdom для анализа и манипулирования XML. Программа работала, но получившиеся файлы вылетали. Мы смогли отследить сбой до странного, в основном, непечатаемого символа в исходных файлах, который не был воспроизведен в файлах, написанных jdom.

Что странного в этом персонаже, так это то, что он появляется не во всех редакторах. Например, редактор Oxygen XML даже не видит этого. Однако в блокноте оригинальное уведомление об авторских правах выглядит так:

<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft 
SQL Server v9; © 2004 Microsoft Corporation; All Rights     
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property>

и преобразованная версия того же элемента:

<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft 
SQL Server v9; © 2004 Microsoft Corporation; All Rights 
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property>

(символ проблемы - перед символом авторского права)

Выполнение глобальной замены в рассматриваемых пакетах, где Â -> "" и © -> "(c)", позволило устранить проблему, но теперь выясняется, что проблема возвращается, когда помещаются неизмененные элементы в модифицированные пакеты, так что теперь я не уверен, что является корнем проблемы.

Опять же, я извиняюсь за длинный пост, но я не хотел опускать какие-либо подробности. Любые идеи или предложения будут с благодарностью; Я довольно хорошо поставлен в тупик.

Мой коллега будет отправлять мне сообщения об ошибках при его попытках загрузить их, я могу опубликовать их, если они будут полезны.

1 Ответ

0 голосов
/ 10 октября 2011

Что касается корня проблемы: запись в одной кодировке и чтение в другой. Смотрите мой ответ на этот вопрос. £ становится £ Почему? Проблема с кодировкой XML ISO? Просто замените знак фунта £ на символ авторского права & # xA9; (Юникод U + 00A9). Надеюсь, вы сможете найти место, где происходит путаница кодирования.

...