通过 GDB 跟踪 PostgreSQL 字符编码

栏目: 数据库 · PostgreSQL · 发布时间: 6年前

内容简介:当 psql 或者其他客户端链接到 PostgreSQL 数据库后,可以使用 gdb 跟踪对应的 postgres 进程,使用几个函数打印输出数据库编码方式、客户端编码方式等信息。第一步,使用 psql 链接到 PostgreSQL 数据库,查看当前数据库的字符编码信息。第二步,使用 gdb attach 对应的 postgres 进程,并打印输出相关的字符编码。

当 psql 或者其他客户端链接到 PostgreSQL 数据库后,可以使用 gdb 跟踪对应的 postgres 进程,使用几个函数打印输出数据库编码方式、客户端编码方式等信息。

第一步,使用 psql 链接到 PostgreSQL 数据库,查看当前数据库的字符编码信息。

postgres=# \l postgres
	                                List of databases
	   Name   |  Owner   | Encoding  |   Collate   |    Ctype    | Access privileges
	----------+----------+-----------+-------------+-------------+-------------------
	 postgres | postgres | SQL_ASCII | en_US.UTF-8 | en_US.UTF-8 |
(1 row)

第二步,使用 gdb attach 对应的 postgres 进程,并打印输出相关的字符编码。

(gdb) bt
	#0  0x00007f9375b16463 in __epoll_wait_nocancel () from /lib64/libc.so.6
	#1  0x00000000006e1c5e in WaitEventSetWait ()
	#2  0x0000000000611bd6 in secure_read ()
	#3  0x000000000061a308 in pq_recvbuf ()
	#4  0x000000000061aed5 in pq_getbyte ()
	#5  0x00000000006ff519 in ReadCommand ()
	#6  0x0000000000701272 in PostgresMain ()
	#7  0x0000000000476fcd in ServerLoop ()
	#8  0x000000000069a01b in PostmasterMain ()
	#9  0x00000000004779e1 in main ()
	(gdb) p (char*) GetDatabaseEncodingName()
	$1 = 0x98c6e6 "SQL_ASCII"
	(gdb) p (char*)pg_get_client_encoding_name()
	$2 = 0x98c719 "UTF8"
	(gdb) p pending_client_encoding
	$3 = 6
	(gdb) p (char*)GetConfigOptionByName("client_encoding", NULL, true)
	No symbol "NULL" in current context.
	(gdb) p (char*)GetConfigOptionByName("client_encoding", 0, true)
	No symbol "true" in current context.
	(gdb) p (char*)GetConfigOptionByName("client_encoding", 0, 1)
	$4 = 0x2267068 "UTF8"
	(gdb)

注:数据库采用 SQL_ASCII 编码,psql 采用 UTF8 编码

第三步,改变 psql 客户端编码方式为韩文编码。

postgres=# set client_encoding to EUC_KR;
	SET

第四步,gdb 再次查看编码方式。

(gdb)  p (char*) GetDatabaseEncodingName()
	$1 = 0x98c6e6 "SQL_ASCII"
	(gdb) p (char*)pg_get_client_encoding_name()
	$2 = 0x98c6fe "EUC_KR"
	(gdb)  p pending_client_encoding
	$3 = 6
	(gdb)  p (char*)GetConfigOptionByName("client_encoding", 0, 1)
	$4 = 0x2267068 "EUC_KR"

Advertisements

分类:PostgreSQL

Tagged as:gdb, 字符编码


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

百度SEM竞价推广

百度SEM竞价推广

马明泽 / 电子工业出版社 / 2017-5 / 59

竞价推广已成为企业昀主要的网络营销方式,《百度SEM竞价推广:策略、方法、技巧与实战》以百度竞价推广为基础,全面阐述了整个竞价推广过程中的重要环节,涉及大量账户操作实战技巧,以及解决各类难点的方法,其中包括搜索引擎营销基础、百度搜索推广介绍、账户结构搭建技巧、关键词与创意的使用技巧、质量度优化与提升、账户工具的使用、百度推广客户端的使用、企业搜索推广方案制作、百度网盟推广、着陆页分析、效果优化与数......一起来看看 《百度SEM竞价推广》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具