void UpdateRecords(PGconn *conn, std::string &records)
{
if(!records.empty())
{
std::string sql;
sql.append("INSERT INTO data.record VALUES ");
sql.append(records);
PGresult *res = PQexec(conn, sql.c_str());
}
}
在这里,记录中的每一列都有用逗号分隔的数据。如果sql字符串中有任何特殊字符可用,如µ
或m³
记录在数据库中未更新(查询失败(。
错误消息ERROR: invalid byte sequence for encoding "UTF8": 0xb5
数据库版本9.6.12
数据库编码:UTF8
数据库希望您发送utf8,但您发送的是其他内容。可能LATIN1延长。
您可以通过首先在连接上执行set client_encoding to latin1
来解决此问题,这样数据库就知道您要向其发送什么编码
您也可以更改records
,使它们实际上包含UTF8字符,但这似乎更难。或者至少,我不知道如何让C++在我的脑海中做到这一点。