私はUTF8エンコーディングを使用するPostgreSQLデータベースを持っています。私はこれがデフォルトのエンコーディングだと信じています。パラメータ化されたSQLクエリで無効なUTF8バイトシーケンスを回避するにはどうすればよいですか?
私は、句を持つ典型的なSELECT
クエリを発行するGUIアプリケーションを持っています。クエリはパラメータ化され、通常、パラメータの内容はエンドユーザによって貼り付けられます。値はテキストファイルなどから読み取られません。メモ編集に貼り付けられます。ここで
は、クエリが...上記のコードで
cmd.CommandText = @"SELECT history_id, emplid, displayname
FROM ""MAX_HISTORY_IDS""
WHERE searchname ILIKE :searchname";
cmd.Parameters.Add("searchname", PgSqlType.VarChar).Value = "Sievert,Jürgen";
で、パラメータ値、Sievert,Jürgen
は、名前であることなどをメモ編集ボックス、またはテキスト入力、のうち、解析された変数になりますまた、Postgreの無効なUTF8バイトシーケンスエラーの原因となるこのクエリを引き起こす名前の実際の例です。
ここでは、データベース上のUTF8エンコーディングが問題なく、この種のコンテンツにはかなり標準であると仮定します。ここで何が間違っていますか?このテキストパラメータのエンコーディングはUTF8ではありませんか?どのようにしてこのクエリを動作させることができますか、またはデータベースのエンコーディングは適切ではありませんか?