首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于m³或µ等特殊字符,通过PQexec的pgsql中的SQL命令失败

对于m³或µ等特殊字符,通过PQexec的pgsql中的SQL命令失败
EN

Stack Overflow用户
提问于 2020-03-15 21:08:42
回答 1查看 72关注 0票数 0
代码语言:javascript
复制
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字符串中有任何特殊字符,如µ,则不会在数据库中更新记录(查询失败)。

错误消息ERROR: invalid byte sequence for encoding "UTF8": 0xb5数据库版本9.6.12数据库编码:UTF8

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-16 02:21:10

数据库期望您发送utf8,但您发送的是其他内容。可能是LATIN1扩展的。

您可以通过首先在您的连接上执行set client_encoding to latin1来修复此问题,这样数据库就可以知道您发送给它的编码。

您还可以更改records,使其真正包含UTF8字符,但这似乎比较困难。至少,我不知道该不该让C++在我脑海中就这么做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60693224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档