↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.

7.3. 单字节字符集重编码 #

你可以通过configure的--enable-recode选项启用这个特性。这个选项以前被描述为“西里尔重编码支持”,那并没有体现它的全部能力。它可以用于任何单字节字符集的重编码。

这种方法使用位于数据库目录(PGDATA)中的 charset.conf文件。它是一个典型的配置文本文件,其中空格和换行分隔项与记录,# 表示注释。这里识别三个关键字,语法如下:

BaseCharset      server_charset
RecodeTable      from_charset to_charset file_name
HostCharset      host_spec    host_charset

BaseCharset定义数据库服务器的编码。所有字符集名只在charset.conf内部用于映射,因此你可以随意使用便于键入的名称。

RecodeTable记录指定服务器和客户端之间的转换表。文件名相对于PGDATA目录。表文件的格式非常简单。没有关键字,字符由单行上的一对十进制或十六进制(0x 前缀)值表示:

char_value   translated_char_value

HostCharset记录按 IP 地址定义客户端字符集。你可以使用单个 IP 地址、从给定地址开始的 IP 掩码范围或 IP 区间(例如 127.0.0.1、192.168.1.100/24、192.168.1.20-192.168.1.40)。

charset.conf文件总是被处理到末尾,因此你可以方便地为前面的规则指定例外。在src/data/ 目录中你可以找到charset.conf的一个示例和一些重编码表。

由于这个方案基于客户端的 IP 地址和字符集映射,显然也有一些限制。你不能在同一台主机上同时使用不同的编码。当你的客户端主机启动到多个操作系统时也不方便。不过,当这些限制不构成障碍且你不需要多字节字符时,它是一个简单而有效的方案。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.