Существующее приложение передает XML в sproc в SQLServer 2000, тип данных входного параметра — TEXT; XML получен из Dataset.GetXML(). Но я заметил, что он не указывает кодировку.
Поэтому, когда пользователь вводит в набор данных неподходящий символ, в частности, ASCII 146 (который выглядит как апостроф) вместо ASCII 39 (одинарная кавычка), sproc завершается ошибкой.
Один из подходов состоит в том, чтобы добавить к результату GetXML префикс
<?xml version="1.0" encoding="ISO-8859-1"?>
В этом случае это работает, но что было бы более правильным, чтобы гарантировать, что sproc не сработает (если появятся другие непредвиденные символы)?
PS. Я подозреваю, что пользователь вводит текст в MS-Word или аналогичный редактор, а затем копирует и вставляет в поля ввода приложения; Я, вероятно, хотел бы позволить пользователю продолжать работать таким образом, просто нужно предотвратить сбои.
РЕДАКТИРОВАТЬ: я ищу ответы, которые подтверждают или опровергают несколько аспектов, например:
- согласно заголовку, какова кодировка по умолчанию, если она не указана в XML?
- Является ли кодировка ISO-8859- 1 правильнее использовать?
— есть ли лучшая кодировка, которая включала бы больше символов в англоязычном мире и, следовательно, с меньшей вероятностью вызывала бы ошибку в sproc?
– вы бы отфильтровали по уровень пользовательского интерфейса приложения для стандартного ASCII (только от 0 до 127) и не разрешать расширенный ASCII?
— любые другие относящиеся к делу детали.