Как избежать специальных символов при получении данных из базы данных? - PullRequest
3 голосов
/ 05 апреля 2010

Я собираюсь сгенерировать файл XML на основе данных, возвращаемых с SQL Server, но есть некоторые специальные символы, такие как  и  (могут быть и другие символы, подобные этим), которые не будут работать с XML.

Есть ли способ избежать их?

Спасибо!

Ответы [ 4 ]

5 голосов
/ 05 апреля 2010

Управляющие символы U + 001C (разделитель файлов) и U + 001F (разделитель единиц) недопустимы для включения в документ XML 1.0, дословно или кодированный с использованием числовой ссылки на символ &#...;.

Они разрешены в документах XML 1.1 только в том случае, если они включены в качестве ссылки на символ. Тем не менее, XML 1.1 не так широко принят, как 1.0, и вы не можете иметь U + 0000 (ноль) даже в качестве ссылки на символ, поэтому все еще невозможно поместить произвольные двоичные данные в файл XML - не то чтобы это было когда-нибудь хорошая идея.

Если вы хотите включить байты данных в файл XML, вам, как правило, следует использовать собственную кодировку ad hoc, которая будет принята всеми пользователями вашего конкретного типа документа. Обычно base64 используется для помещения двоичных данных в XML. Для форматов, в которых нет такой специальной схемы кодирования, вы просто не можете вставить эти управляющие символы.

Какова цель управляющих символов?

1 голос
/ 05 апреля 2010

Точно так же, как вы избегаете любого другого пользовательского ввода перед вставкой в ​​базу данных; вероятно один из (от худшего к лучшему):

  • Экранирование управляющих символов перед построением оператора SQL
  • Использование параметризованных запросов
  • Использование DAO или ORM, которое абстрагирует вас от этой проблемы
0 голосов
/ 06 апреля 2010

Ну, я просто использую материал для сопоставления с образцом, чтобы заменить эти специальные символы вручную. Подходит для '& #. +?;'

0 голосов
/ 05 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...