34.7. character_sets

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

请注意下列条目在SQL标准中是怎样使用的:

字符指令系统

一个概要的字符集合,例如UNICODE, UCS, 或LATIN1。不是作为一个SQL对象公开的,但是在这个视图中可见。

字符编码形式

一些字符指令系统的编码。大多数老旧的字符指令系统只使用一种编码形式,并且因此他们没有单独的名字 (例如LATIN1是一种适用于LATIN1指令系统的编码形式)。 但是例如Unicode有编码形式UTF8, UTF16等等。 (不是所有都被PostgreSQL支持)。编码形式不是作为SQL对象公开的,但是在这个视图中可见。

字符集

一个标志字符指令系统的命名的SQL对象,一种字符编码,和一个缺省的排序规则。 一个预定义的字符集通常和编码形式有相同的名称,但是用户可以定义其他名称。 例如,字符集UTF8通常识别字符指令系统UCS, 编码形式UTF8和一些缺省的排序规则。

你可以认为PostgreSQL中的一个"encoding"是一个字符集或一种字符编码形式。 他们将有相同的名称,并且在一个数据库中只能有一个。

表 34-5. character_sets 字段

名字数据类型描述
character_set_catalogsql_identifier字符集当前还没有作为模式对象实现,所以这个字段是null。
character_set_schemasql_identifier字符集当前还没有作为模式对象实现,所以这个字段是null。
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 当前数据库设置的规则。如果没有这种规则,那么这个字段和相关的模式和目录字段为null。