35.7. character_sets

视图character_sets标识当前数据库中可用的字符集。因为 PostgreSQL 不支持在同一个数据库中有多个字符集,这个视图只显示一个字符集,它就是数据库编码。

注意下列术语在 SQL 标准中是怎样使用的:

字元集(character repertoire)

字符的一个抽象集合,例如UNICODEUCSLATIN1。它不作为一个 SQL 对象显示,但是在这个视图中可见。

字符编码形式(character encoding form)

某种字元集的一种编码。大部分较老的字元集只使用一种编码形式,并且因此它们没有独立的名字(例如LATIN1就是一种适用于LATIN1字元集的编码形式)。但是 Unicode 就有几种编码形式如UTF8UTF16等等(并非全部被 PostgreSQL 支持)。编码形式不作为一个 SQL 对象显示,但是在这个视图中可见。

字符集(character set)

一个标识一种字元集、一种字符编码以及一种默认排序规则的命名 SQL 对象。一个预定义的字符集通常具有和一种编码形式相同的名字,但是用户可以定义其他名字。例如,字符集UTF8通常标识字元集UCS、编码形式UTF8以及某种默认排序规则。

你可以把 PostgreSQL 中的一种"编码"想成一个字符集或是一种字符编码形式。它们将具有相同的名字,并且在一个数据库中只能用其中一个。

表 35-5. character_sets

名称数据类型描述
character_set_catalogsql_identifier当前字符集并未被实现为模式对象,因此这一列为空。
character_set_schemasql_identifier当前字符集并未被实现为模式对象,因此这一列为空。
character_set_namesql_identifier该字符集的名字,当前实现为显示该数据库编码的名字
character_repertoiresql_identifier字元集,如果编码为UTF8则显示UCS,否则只显示编码名称
form_of_usesql_identifier字符编码形式,与数据库编码相同
default_collate_catalogsql_identifier包含该默认排序规则的数据库名(如果任意排序规则被标识,总是当前数据库)
default_collate_schemasql_identifier包含该默认排序规则的模式名
default_collate_namesql_identifier 默认排序规则的名字。该默认排序规则被标识为匹配当前数据库的COLLATECTYPE设置的排序规则。如果没有那种排序规则,那么这一列和相关模式以及目录列为空。