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
发布于 2020-03-16 02:21:10
数据库期望您发送utf8,但您发送的是其他内容。可能是LATIN1扩展的。
您可以通过首先在您的连接上执行set client_encoding to latin1来修复此问题,这样数据库就可以知道您发送给它的编码。
您还可以更改records,使其真正包含UTF8字符,但这似乎比较困难。至少,我不知道该不该让C++在我脑海中就这么做。
https://stackoverflow.com/questions/60693224
复制相似问题