现有应用程序在SQLServer 2000中将XML传递给一个sproc,输入参数数据类型为TEXT;XML 派生自 Dataset.GetXML()。但我注意到它没有指定编码。
因此,当用户将不适当的字符潜入数据集中时,特别是 ASCII 146(似乎是撇号)而不是 ASCII 39(单引号)时,存储过程会失败。
一种方法是在 GetXML 的结果前面加上
<?xml version="1.0" encoding="ISO-8859-1"?>
它在这种情况下有效,但是确保存储过程不会崩溃(如果弹出其他无法预料的字符)的更正确方法是什么?
PS。我怀疑用户在 MS-Word 或类似的编辑器中输入文本,然后复制并粘贴到应用程序的输入字段中;我可能希望允许用户继续以这种方式工作,只需要防止崩溃。
编辑:我正在寻找确认或否认几个方面的答案,例如:
-根据标题,如果 XML 中没有指定,默认编码是什么?
- 编码 ISO-8859-1 是否适合使用?
- 如果有更好的编码可以包含英语世界中的更多字符,因此不太可能导致存储过程中的错误?
- 您是否会在应用程序的 UI 级别过滤标准 ASCII(仅 0 到 127),并且不允许扩展 ASCII?
- 任何其他相关细节。