PostgreSQL 客户端乱码问题

关于客户端和服务器端的乱码问题, POSTGRESQL字符集问题总结 总结的很详细, 特别棒.

这里让我头痛了很久的问题在于 终端 上字符编码的问题, 由于我的mbp上的 iterm2 的默认编码为 utf-8, 字符显示乱码实际上是由于 iterm2 不能好好显示 GBK 的编码导致的. 平时终端中可以显示中文, 不清楚为何 postgresql shell 中就不行了, 这导致一直没有想到是终端的问题.

关于中文可以正常显示, 我的配置如下

1. 安装 PostgreSQL 的 locale 选择的是 zh_CN.UTF-8
2. 客户端默认编码为 utf-8, 改为 gbk (\encoding 常看当前客户端编码字符集), 有两种方式可以选择:
    * set client_encoding to 'gbk'
    * \encoding 'gbk'

3. 终端 iterm2 字符编码设置为 'gbk'

引用引文的一个例子

假设服务端编码为UTF-8,客户端工具psgl默认为GBK,

  1. 在此环境下插入“汉字”,一切正常。此时传到客户的“汉字”为GBK编码,自动转为UTF-8编码存到服务端;而查询时,又自动将服务端的UTF-8编码转为GBK来显示,所以没有出现乱码。
  2. 将客户端编码设置为UTF-8,则刚才插入的“汉字”不能正常显示。因为此时客户端和服务端的编码一样,在取数据时不进行任何转换,直接将存在服务端的UTF8编码的字节传到客户端,之后psgl直接显示,所以就乱码了。
  3. 此环境下插入“汉字”,则添加不成功,因为“汉字”直接以GBK的形式传到服务端,UTF8编码不认识,所以就报错。(现在客户端编码为UTF8,所以提示的中文信息也乱码了)。

总结:

1、在此示例中,应用程序psgl,对所输入和获取的字符没做任何处理,直接显示,其使用了pg客户端一样的编码方式(GBK)。
2、在使用时尽量保证客户端编码和操作系统环境一致,不然显示和添加就会出现乱码情况。

时间: 2024-11-05 02:26:11

PostgreSQL 客户端乱码问题的相关文章

mysql客户端乱码

今天安装mysql,安装完成之后,通过客户端进行查询数据查询,发现中文是乱码.真是无奈啊,, 坐下来慢慢研究下,过程大概如下: 首先使用mysql工具查询数据库,看看对应的表是不是utf8,会不会乱码. 远程使用客户端发现不会乱码 在查看表的字段是什么编码 表的字符编码也没问题,那问题在那呢? 查看了本地mysql客户端的编码: 查看了mysql的客户端的编码,发现了道道 修改mysql配置文件的client处编码: 在my.cnf中的client处加了编码,重启mysql服务,再次检测 唉咬,

【PostgreSQL学习之旅】第一篇:Linux和Windows下安装PostgreSQL9.4

一.简介 PostgreSQL是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等:其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务.子查询.多版本并行控制系统(MVCC).数据完整性检查等特性的唯一的一种自由软件的数据库管理系统. 二.Linux下安装 1) 环境:RedHat Enterprise 6.5 x64(2.6.32-431.el6.x86_64) PostgreSQL

PostgreSQL新手入门

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用. 一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get install postgresql 正常情况下,安装完

访问Tableau自带的PostgreSQL数据库

突然发现公司Tableau服务器的数据库大小急剧增加,因此决定直接连上数据库排查.过程记录如下:最后发现有个http_requests 表体积巨大(7G),本来以为是数据缓存什么的.结果是日志问题o(╯□╰)o. 因为公司用的Tableau版本比较低无法直接查看该表,暂时没动它,不知道会不会影响性能. 一.开启Tableau Server数据库访问权限 1. 打开命令行提示窗口(管理员)进入Tableau程序所在目录 cd "C:\Program Files\Tableau\Tableau Se

Ubuntu PostgreSQL安装和配置

1.安装 使用如下命令,会自动安装最新版,这里为9.5 sudo apt-get install postgresql 安装完成后,默认会: (1)创建名为"postgres"的Linux用户 (2)创建名为"postgres".不带密码的默认数据库账号作为数据库管理员 (3)创建名为"postgres"的表 安装完成后的一些默认信息如下: config /etc/postgresql/9.5/main data /var/lib/postgre

PostgreSQL新手教程

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选.本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用.安装1. 首先,安装PostgreSQL客户端.  sudo apt-get install postgresql-client然后,安装PostgreSQL服务器.  sudo apt-get install postgresql2. 正常情况下,安装

AVAYA AEP运维之PostgreSQL数据库相关

由于AEP EPM所有相关的报表数据(应用运行日志,呼叫清单,会话清单),配置信息等都存在本地PostgreSQL上,了解PostgreSQL的相关基本使用方法,有助于日常运维能力的提升.本篇主要总结如何开启本地登陆,开启远端登陆,基本命令,数据备份和清理. 如何开启本地和远端登陆 在EPM安装的过程中,会把PostgreSQL也一并安装掉,过程中会提示输入用户名postgres的密码,以及创建一个报表用户.当时当你本地使用PostgreSQL去登陆数据库时,始终登陆不上:通过PostgreSQ

postgresql数据库安装及简单操作

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用. 一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get install postgresql 正常情况下,安装完

PostgreSQL简单介绍

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用. 一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get install postgresql 正常情况下,安装完