当前位置: 首页 > news >正文

【PG】PostgreSQL字符集

目录

设置字符集

1 设置集群默认的字符集编码

2 设置数据库的字符集编码

查看字符集

1 查看数据字符集编码 

2 查看服务端字符集

3 查看客户端字符集

4 查看默认的排序规则和字符分类

 被支持的字符集


PostgreSQL里面的字符集支持你能够以各种字符集存储文本,包括单字节字符集,比如 ISO 8859 系列,以及多字节字符集 ,比如EUC(扩展 Unix 编码 Extended Unix Code)、UTF-8 和 Mule 内部编码。所有被支持的字符集都可以被客户端透明地使用,但少数只能在服务器上使用(即作为一种服务器方编码)。默认的字符集是在使用 initdb初始化你的PostgreSQL数据库集簇时选择的。在你创建一个数据库时可以重载它,因此你可能会有多个数据库并且每一个使用不同的字符集。

但是,一个重要的限制是每个数据库的字符集必须和数据库的LC_CTYPE (字符分类)和LC_COLLATE (字符串排序顺序)设置兼容。对于 CPOSIX环境,任何字符集都是允许的, 但是对于其他libc提供的环境只有一种字符集可以正确工作(不过, 在Windows上UTF-8编码可以和任何环境配合使用)。 如果您配置了ICU支持,则ICU提供的区域设置可用于大多数服务器端编码, 但不能用于所有服务器端编码。

设置字符集

1 设置集群默认的字符集编码

initdb为一个PostgreSQL集簇定义缺省的字符集(编码)。比如:把缺省字符集设置为EUC_JP(用于日文的扩展Unix 编码)。

initdb -E EUC_JP
或者
initdb --encoding EUC_JP

如果没有给出-E或者--encoding选项,initdb会尝试基于指定的或者默认的区域判断要使用的合适编码。 

2 设置数据库的字符集编码

数据库创建时你指定一个非默认编码,提供的编码应和选择的区域兼容:

createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean
或者SQL 
CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

注意:上述命令指定拷贝template0数据库。在拷贝任何其他数据库时,不能更改从源数据库得来的编码和区域设置,因为这可能会导致破坏数据。

查看字符集

1 查看数据字符集编码 

数据库的字符集存储在系统目录pg_database

psql -l
或者
postgres=# \lList of databasesName     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-------------+----------+----------+-------------+-------------+-----------------------db3         | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  |db4         | role1    | UTF8     | en_US.UTF8  | en_US.UTF8  |db5         | role2    | UTF8     | en_US.UTF8  | en_US.UTF8  |dbtemplate  | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  |dbtemplate1 | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  |dbtemplate2 | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  |korean      | postgres | EUC_KR   | ko_KR.euckr | ko_KR.euckr |postgres    | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  |template0   | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  | =c/postgres          +|          |          |             |             | postgres=CTc/postgrestemplate1   | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  | =c/postgres          +|          |          |             |             | postgres=CTc/postgrestestdb      | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  |
(11 rows)

2 查看服务端字符集

# 服务端字符集
postgres=# show server_encoding;server_encoding
-----------------UTF8
(1 row)

3 查看客户端字符集

# 客户端字符集
postgres=# show client_encoding;client_encoding
-----------------UTF8
(1 row)postgres=#
postgres=#  \encoding
UTF8

4 查看默认的排序规则和字符分类

# 字符分类
postgres=# show lc_ctype;lc_ctype
------------en_US.UTF8
(1 row)# 排序规则
postgres=# show lc_collate;lc_collate
------------en_US.UTF8

 被支持的字符集

参考 PostgreSQL字符集

http://www.lryc.cn/news/205286.html

相关文章:

  • 力扣:137. 只出现一次的数字 II(Python3)
  • orb-slam3编译手册(Ubuntu20.04)
  • 升级 Xcode 15模拟器 iOS 17.0 Simulator(21A328) 下载失败
  • PHP 函数、PHP 简单后门
  • 前端实现菜单按钮级权限
  • STM32:TTL串口调试
  • 【Jenkins 安装】
  • JVM——GC垃圾回收器
  • 【三维重建-PatchMatchNet复现笔记】
  • CSS - 常用属性和布局方式
  • 数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)
  • LVS+keepalived高可用负载均衡集群
  • 解密Kubernetes:探索开源容器编排工具的内核
  • 苹果手机怎么设置壁纸?解锁设置壁纸的2种方法!
  • 解决LOGITECH 罗技驱动 MAC版出现的一些问题汇总!
  • PyQt5入门4——给目标检测算法构建一个简单的界面
  • Pandas数据分析系列9-数据透视与行列转换
  • 部分背包问题细节(贪心)
  • windows协议详解之-RPC/SMB/LDAP/LSA/SAM域控协议关系
  • uniapp中 background-image 设置背景图片不展示问题
  • Elasticsearch打分机制
  • 【pdf密码】为什么我的PDF文件不能复制文字?
  • vim程序编辑器
  • 新手如何学习挖漏洞?看这篇就够了【网络安全】
  • CentOS 7.8 kubeadm安装 k8s 1.26
  • 成都瀚网科技有限公司抖音小店:创新营销引领电商潮流
  • 警惕!又2本期刊被“On Hold”!
  • 一台服务器成了哆啦A梦的神奇口袋
  • java 关闭access文件资源后,无法删除文件
  • Typecho 添加 Emoji 表情报错「解决方案」