↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

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

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。