Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在参数化SQL查询中避免无效的UTF8字节序列?_C#_Postgresql_Encoding_Utf 8 - Fatal编程技术网

C# 如何在参数化SQL查询中避免无效的UTF8字节序列?

C# 如何在参数化SQL查询中避免无效的UTF8字节序列?,c#,postgresql,encoding,utf-8,C#,Postgresql,Encoding,Utf 8,我有一个PostgreSQL数据库,它使用UTF8编码。我相信这是默认编码 我有一个GUI应用程序,它发出一个典型的SELECT查询,并带有WHERE子句。查询是参数化的,参数的内容通常由最终用户粘贴。该值不是从文本文件等中读取的,而是粘贴到备忘录编辑中 这里是查询 cmd.CommandText = @"SELECT history_id, emplid, displayname FROM ""MAX_HISTORY_IDS""

我有一个PostgreSQL数据库,它使用UTF8编码。我相信这是默认编码

我有一个GUI应用程序,它发出一个典型的
SELECT
查询,并带有
WHERE
子句。查询是参数化的,参数的内容通常由最终用户粘贴。该值不是从文本文件等中读取的,而是粘贴到备忘录编辑中

这里是查询

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?我如何才能让这个查询工作,或者数据库上的编码不合适吗?

我找到了答案。我正在使用DotConnect PostgreSQL客户端库。在连接字符串中,我只需要添加
Unicode=True
。这似乎使一切工作