繁体   English   中英

如何处理 libpq 中的 UTF-8 编码错误?

[英]How handle UTF-8 encoding error in libpq?

我创建了这个 function 来将数据插入数据库:

void add_data_to_db(){
        const char *data[2][2] = {"2","e"};
        re = PQexecParams(connection,
                        "INSERT INTO test_table "\
                        "VALUES ($1, $2);",
                        2,NULL,data[2],NULL,NULL,0);
        if(PQresultStatus(re) != PGRES_TUPLES_OK){
                printf("%s\n", PQresultErrorMessage(re));
        }

        PQclear(re);
}

但是当我运行程序时,它会打印:

ERROR:  invalid byte sequence for encoding "UTF8": 0x80

据我所知,当我们将 null 值添加到表中时会发生此问题,但我没有。

根据文档PQExecParams的第五个参数应该是const char * const *paramValues ... 所以指向常量指针的指针指向常量char 文档指定它应该指向指定(在第三个参数中)长度的数组(此处为 2)。

data[2]data数组的第三个元素(哎呀,它只有两个元素。)。

data将衰减为指向第一个元素的指针; 那是一个指向由两个指针组成的数组的指针,每个指针都指向一个字符串。 正是你需要的。

它应该是const char *data[2] ,并且 function 调用应该有data而不是data[2]

该错误消息意味着 PostgreSQL 遇到的字节不是正确编码的 UTF-8 字符串的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM