如题:调用libpq库中的PQexec函数:
原型:PQexec(PGconn *conn, char *cArray)
当我用std::string szString = "insert into student (name, num) values ('我', 123)";
用调用函数:PQexec( conn, szString.c_str() );
返回FATAL ERROR,并没有写入数据库。
但当我用std::string szString = "insert into student (name, num) values ('me', 123)";
同样调用函数:PQexec( conn, szString.c_str() );
却返回成功,并成功写入数据库。问题疑似:
std::string类型转为char数组(8位)的时候无法辨析中文,传送的时候将中文“我”拆分,传送过去后无法组装成“我”,而是形成乱码估整条语句也无法辨析。提问:
1、究竟是什么原因导致这样的错误?
2、有怎样的办法可以修正这样的错误?使得能够调用函数(不一定要调用PQexec)写入数据库?万分感谢!
原型:PQexec(PGconn *conn, char *cArray)
当我用std::string szString = "insert into student (name, num) values ('我', 123)";
用调用函数:PQexec( conn, szString.c_str() );
返回FATAL ERROR,并没有写入数据库。
但当我用std::string szString = "insert into student (name, num) values ('me', 123)";
同样调用函数:PQexec( conn, szString.c_str() );
却返回成功,并成功写入数据库。问题疑似:
std::string类型转为char数组(8位)的时候无法辨析中文,传送的时候将中文“我”拆分,传送过去后无法组装成“我”,而是形成乱码估整条语句也无法辨析。提问:
1、究竟是什么原因导致这样的错误?
2、有怎样的办法可以修正这样的错误?使得能够调用函数(不一定要调用PQexec)写入数据库?万分感谢!
要不你试下UNICODE吧
std::string szString = "insert into student (name, num) values (N'我', 123)";
先执行一下set client_encoding=gbk这个SQL语句