既存のアプリは XML を SQLServer 2000 の sproc に渡します。入力パラメーターのデータ型は TEXT です。XML は Dataset.GetXML() から派生します。しかし、エンコーディングが指定されていないことに気付きました。
そのため、ユーザーが不適切な文字、具体的には ASCII 39 (一重引用符) ではなく ASCII 146 (アポストロフィのように見える) をデータセットに忍び込ませると、sproc は失敗します。
1 つの方法は、GetXML の結果に接頭辞を付けることです。
<?xml version="1.0" encoding="ISO-8859-1"?>
この場合は機能しますが、sproc がクラッシュしないようにするためのより正しいアプローチは何でしょうか (他の予期しない文字がポップアップした場合)。
PS。ユーザーが MS-Word または同様のエディターにテキストを入力し、コピーしてアプリの入力フィールドに貼り付けていると思われます。クラッシュを防ぐ必要があるだけで、ユーザーがこの方法で作業を続けられるようにしたいと思うでしょう。
編集:いくつかの側面を確認または拒否する回答を探しています。たとえば、
-タイトルごとに、XMLで指定されていない場合のデフォルトのエンコーディングは何ですか?
- エンコーディング ISO-8859-1 は使用するのに適切ですか?
- 英語圏でより多くの文字を含み、sproc でエラーが発生する可能性が低い、より優れたエンコーディングがある場合は?
- アプリの UI レベルで標準 ASCII (0 ~ 127 のみ) をフィルター処理し、拡張 ASCII を許可しませんか?
- その他の関連する詳細。