0

asp.net を使用して SQL のプロファイル テーブルに特殊文字 (ウムラウト、ドイツ語など) を保存することについて質問があります。

この情報をフォーム送信で別のデータベースにフィードすると、これらのフィールドが最後のデータベースに到達したときに、ö や ä などの文字が や のような ASCII コードとして入ってくることがわかりましäö

aspnet_Profile テーブルに戻ってソース データを探したところ、文字がそのようにデータベースに格納されていたことがわかりました。

私の質問はです。これらの文字を ö または ä として SQL サーバーに保存する方法はありますか、またはそれらをプロファイルから引き出して Web ページに表示し、エンド データベースに挿入するときにエンコード/デコードする必要がありますか (これはOracle であり、これらの文字を処理できます)。

プロファイル テーブルの各フィールドをエンコード/デコードする必要がある場合、プロファイルにデータを送信するときにそれを行いますか? または、オラクルへのウェブサイト/レコード挿入のプロファイルからデータを取得するときは?

初心者の質問で申し訳ありませんが、私は初心者です!

4

1 に答える 1

0

問題は、パラメーターを使用して値を渡すのではなく、SQL を直接作成する場合です。

次のような INSERT ステートメントを作成する場合:

string cmd = string.Format("INSERT INTO FOO (col) VALUES ({0})", value);

Oracle は、Unicode 文字列が渡されていることを認識せず、エスケープする場合があります。これにより、潜在的な SQL インジェクション ハッキングの可能性も残されますが、それは別の問題です。

データベースに渡される値には、パラメーターを使用する必要があります。例えば:

using (var conn = new OracleConnection(connectionString)) {
    using (var command = new OracleCommand("INSERT INTO FOO (col) VALUES (?)")) {
        command.Connection = conn;
        command.Parameters.AddWithValue("?", value);
        command.ExecuteNonQuery();
    }
}
于 2012-12-05T21:47:41.347 に答える