修改postgresql服务器编码,PostgreSQL 字符集支持

initdb 为一个 PostgreSQL 集群定义缺省的字符集,比如:

initdb -E EUC_JP

把缺省字符集设置为 EUC_JP(用于日文的扩展 Unix 编码)。如果你喜欢用长选项声明的话,可以用 --encoding 代替 -E 选项。如果没有给出 -E 或 --encoding 选项,initdb 将基于制定的区域或者缺省区域试图判断合适的编码。

你可以创建一个有着不同编码的数据库:

createdb -E EUC_KR korean

将创建一个使用 EUC_KR 字符集的名字叫 korean 的数据库。另外一种实现方法是使用 SQL 命令:

CREATE DATABASE korean WITH ENCODING 'EUC_KR';

数据库的编码是存储在 pg_database 系统表中的。你可以用 psql 的 -l 选项或 \l 命令列出这些编码。

$ psql -l

List of databases

Database | Owner | Encoding

---------------+---------+---------------

euc_cn | t-ishii | EUC_CN

euc_jp | t-ishii | EUC_JP

euc_kr | t-ishii | EUC_KR

euc_tw | t-ishii | EUC_TW

mule_internal | t-ishii | MULE_INTERNAL

postgres | t-ishii | EUC_JP

regression | t-ishii | SQL_ASCII

template1 | t-ishii | EUC_JP

test | t-ishii | EUC_JP

utf8 | t-ishii | UTF8

(9 rows)

【重要】虽然你可以给一个数据库声明你需要的任何编码,但选择一个与你选择的区域不一致的编码还是不妥的做法。LC_COLLATE 和 LC_CTYPE 设置暗示一个特定的编码,与区域相关的操作(比如排序)在不兼容的编码里很有可能产生错误的解析。

因为这些区域设置都是由 initdb 冻结的,所以在不同的数据库里使用不同的编码更多是理论而不是现实。这些机制很有可能在将来版本的 PostgreSQL 得到改进。

一个安全使用多种编码的方法是在 initdb 的时候把区域设置为 C 或 POSIX ,这样就关闭了任何实际的区域敏感性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值