[英]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.