ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 31.10\. 控制函数 这些函数控制许多libpq其他行为的细节。 `PQclientEncoding` 返回客户端编码。 ``` int PQclientEncoding(const PGconn *_conn_); ``` 请注意,它返回编码ID,而不是一个符号串如`EUC_JP`。 转换编码的ID为一个编码名称,你可以使用: ``` char *pg_encoding_to_char(int _encoding_id_); ``` `PQsetClientEncoding` 设置客户端编码。 ``` int PQsetClientEncoding(PGconn *_conn_, const char *_encoding_); ``` `_conn_`是一个到服务器的连接,`_encoding_` 是你想要的编码使用。如果函数成功设置编码,则返回0,否则返回-1。 这个链接的当前编码可以通过`PQclientEncoding`确定。 `PQsetErrorVerbosity` 决定`PQerrorMessage`和`PQresultErrorMessage`返回的信息的冗余程度。 ``` typedef enum { PQERRORS_TERSE, PQERRORS_DEFAULT, PQERRORS_VERBOSE } PGVerbosity; PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity); ``` `PQsetErrorVerbosity`设置冗余模式,返回连接的前一个设置。在_TERSE_模式下, 返回的消息只包括严重性,主信息,以及位置信息;这些东西通常只有一行。 缺省模式生成的消息包括上面的信息加上任何细节,提示,或者环境字段(这些可能跨越几行)。 _VERBOSE_模式包括所有可以获得的字段。修改冗余模式不会影响我们从已经存在 `PGresult`对象中获取的信息,只有随后创建的`PGresult`对象才受到影响。 `PQtrace` 打开对前端/服务器通讯的跟踪,把调试信息输出到一个文件流里。 ``` void PQtrace(PGconn *conn, FILE *stream); ``` > **Note:** 在Windows上,如果libpq库和应用使用了不同的标志编译, 那么这个函数调用会导致应用崩溃,因为`FILE`指针的内部表现形式是不一样的。 特别是多线程/单线程,发布/调试,以及静态/动态标志应该是库和所有使用库的应用都一致。 `PQuntrace` 关闭`PQtrace`打开的跟踪。 ``` void PQuntrace(PGconn *conn); ```