【PG】PostgreSQL字符集

news/2024/7/9 20:57:13 标签: postgresql, 字符集, 1024程序员节

目录

设置字符集

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=# \l
                                   List of databases
    Name     |  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/postgres
 template1   | postgres | UTF8     | en_US.UTF8  | en_US.UTF8  | =c/postgres          +
             |          |          |             |             | postgres=CTc/postgres
 testdb      | 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.niftyadmin.cn/n/5117664.html

相关文章

mysql json数据类型 相关函数

创建JSON文本的函数 1.JSON_ARRAY(转换json数组) 2.JSON_OBJECT(转换json对象) 3.JSON_QUOTE(转义字符串) 搜索JSON文本的函数 1.JSON_CONTAINS(json当中是否包含指定value) 2.J…

无用自动化测试?

自动化测试,特别是UI级的自动化测试是一件费力而不讨好的事情。自动化测试使得测试人员疲于应付,朝不顾夕,如坐针毡,苟延残喘。UI级的自动化测试看起来很美好,就像罂粟,如果你经不住诱惑冒然尝试&#xff0…

爬虫知识之BeautifulSoup库安装及简单介绍

一. 前言 在前面的几篇文章中我介绍了如何通过Python分析源代码来爬取博客、维基百科InfoBox和图片,其文章链接如下: 其中核心代码如下: # coding=utf-8 import urllib import re #下载静态HTML网页 url=http://www.csdn.net/ content = urllib.urlopen(url).read…

重入漏洞EtherStore

重入漏洞 // SPDX-License-Identifier: MIT pragma solidity ^0.8.13;contract EtherStore {mapping(address > uint) public balances;function deposit() public payable {balances[msg.sender] msg.value;}function withdraw() public {uint bal balances[msg.sender]…

主题模型--BERTopic

一、概念 1.1 主题模型 主题模型(Topic Model)是自然语言处理中的一种常用模型,是一种无监督学习方法,它用于从大量文档中自动提取主题信息。 主题模型的核心思想是,每篇文档都可以看作是多个主题的混合&#xff0c…

基于卷积神经网络的乳腺癌分类 深度学习 医学图像 计算机竞赛

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

Jmeter接口测试(十一):BeanShell脚本详解

BeanShell简介 BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些 语法和方法; BeanShell是一种松散类型的脚本语言; BeanShell是用Java写成的,一个小型的、免费的、可以下载、嵌入式的 Java源代码解释器,具…

塑料透光率检测仪可以控制产品质量

塑料质量检测对于产品的制造和装配过程至关重要。通过质量检测,如果材料中含有杂质或污染物,将影响其透光性能。通过测试,可以及时发现并处理这些问题,避免生产过程中出现批量质量问题。此外,质量控制还可以帮助组织提…