【问题标题】:How to avoid invalid UTF8 byte sequence in parameterized SQL queries?如何避免参数化 SQL 查询中的无效 UTF8 字节序列?
【发布时间】:2016-09-15 17:18:39
【问题描述】:

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

【问题讨论】:

    标签: c# postgresql encoding utf-8


    【解决方案1】:

    我想通了。我正在使用 DotConnect PostgreSQL 客户端库。在连接字符串中,我只需要添加Unicode=True。这似乎使一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-28
      • 2011-06-19
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多