【PG】PostgreSQL字符集

这篇具有很好参考价值的文章主要介绍了【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=# \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字符集文章来源地址https://www.toymoban.com/news/detail-720634.html

到了这里,关于【PG】PostgreSQL字符集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux字符集详解

    计算机中处理和储存信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照某种规则将字符存储在计算机中,如’a’用97表示,称为\\\"编码\\\";反之,将计算机中的二进制数解析显示出来,称为\\\"解码\\\"。在解码过程中,

    2024年02月06日
    浏览(54)
  • 字符集详解

    计算机底层不可以直接存储字符的。 计算机中底层只能存储二进制(0、1) 。 二进制是可以转换成十进制的。 结论:计算机底层可以表示成十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集。 ASCII(American Standard Code for Information Interchange,美国信息交

    2024年02月07日
    浏览(44)
  • (三) MySQL字符集

    MySQL字符集包括 基字符集 (CHARACTER)与 校对规则 (COLLATION)这两个概念: latin1支持西欧字符、希腊字符等 gbk支持中文简体字符 big5支持中文繁体字符 utf8几乎支持世界所有国家的字符 utf8mb4是真正意义上的utf-8 查看当前数据库默认的字符集: SHOW VARIABLES like \\\'character%\\\'; MySQL在

    2024年01月24日
    浏览(60)
  • oracle 字符集

      NLS_NCHAR_CHARACTERSET  国家字符集 NLS_CHARACTERSET  字符集 -----字符集和国家字符集的区别 字符集用来存储CHAR,VARCHAR2,CLOB,LONG等类型数据。 国家字符集用以存储NCHAR,NVARCHAR2,NCLOB等类型数据。

    2024年01月24日
    浏览(48)
  • TiDB字符集和时区

    TiDB 字符集和时区 mysql select @@version; +--------------------------------------+ | @@version | +--------------------------------------+ | 5.7.10-TiDB-v2.1.0-beta-179-g5a0fd2d | +--------------------------------------+ 1 row in set (0.00 sec) mysql show variables like \\\'coll%\\\'; +----------------------+-------------------+ | Variable_name | Value | +---

    2024年02月16日
    浏览(56)
  • 常用ASCII字符集(做题用)

    以下是ASCII字符集的一部分,包括可打印字符和控制字符。ASCII(美国信息交换标准代码)是一种用于表示文本字符的字符编码标准,使用7位二进制数来表示128个不同的字符。 这是ASCII字符集的一个简短示例。其中包含了常见的可打印字符、数字和标点符号,以及控制字符。

    2024年02月08日
    浏览(43)
  • Linux的字符集及编码

    Linux 字符集设置 1、查询 (1) 查看当前服务器字符集:  # locale  (2) 查看服务器支持的字符集:  # locale -a 2、修改linux系统字符集的方式有如下两种: (1) 直接设置变量的方式修改,命令如下两条命令: [root~]# LANG=\\\"xxx\\\" 或者  export  LANG=\\\"xxx\\\"  [root ~]# LC_ALL=\\\"xxx\\\"  或者  export LC_ALL

    2024年02月09日
    浏览(46)
  • 【MySQL】——数据类型及字符集

    🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:数据结构_IT闫的博客-CSDN博客 🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客 💎C++:C++_IT闫的博客-CSDN博

    2024年02月03日
    浏览(50)
  • 3.字符集和比较规则简介

    我们知道,计算机中实际存储的是二进制数据,那它是怎么存储字符串呢?当然是建立字符与二进制数据的映射关系了。要建立这个关系,最起码要搞清楚下面这两件事儿。 要把哪些字符映射成二进制数据?也就是界定字符范围。 怎么映射?将字符映射成二进制数据的过程

    2024年02月06日
    浏览(49)
  • Azure sqlserver 更改字符集

    我们的Azure SQL Server是在2018年建的,当时还不支持汉字的字符集。然后最近发现因为字符集的缘故,出了bug,要调整字符集。然后就照着sqlserver 排序规则(字符集)查看与修改 一通修改。 然后神奇的事情来了,Sql Server 刚建好的时候,可以改DB的字符集。但是已经存在的DB,

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包