我有一个使用UTF8编码的PostgreSQL数据库。我相信这是默认编码。
我有一个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吗?如何使此查询起作用,或者数据库上的编码是否不合适?
答案 0 :(得分:1)
我明白了。我正在使用DotConnect PostgreSQL客户端库。在连接字符串中,我只需要添加Unicode=True
。这似乎使一切正常。