(转)用PostgreSQL,要设置好locale

utf8作字符集,无可争议,因为pg不支持GBK和GB18030作字符集
    还有一个参数locale
    在安装windows版会让你指定locale,如果选择"default locale"就会安装不正确。这个现象好像从8.2版的windows安装包开始出现。

选什么呢?查看一下下拉框,只有4个中文:中文香港、中文新加坡、中文台湾、中文澳门
    对我们有用吗?
    来做一个实验

运行如下代码

Java代码
  1. create table   x (n varchar(4));   
  2. insert into x values('王');   
  3. insert into x values('李');   
  4. insert into x values('里');   
  5. insert into x values('張');   
  6. insert into x values('莉');   
  7. insert into x values('裏');   
  8. insert into x values('刘');   
  9. insert into x values('张');   
  10. select * from x order by n;  
create table x (n varchar(4));insert into x values('王');insert into x values('李');insert into x values('里');insert into x values('張');insert into x values('莉');insert into x values('裏');insert into x values('刘');insert into x values('张');select * from x order by n;



字符集utf8   locale C 结果:









字符集utf8   locale 中文香港 结果:









字符集utf8   locale 中文936(gb2312) 结果:









哪一个符合我们中国大陆的中文习惯,或者说排序效果正确?
是:locale 中文936(gb2312)

很可惜,pg的windows安装包四选项没有这一项,国人加油,争取在未来发行版中有这一项。

现在只能任选一个locale安装,装完删除掉data文件夹,命令行重新生成正宗的中文数据库:

initdb -D data --locale=chinese-simplified_china.936 -E UTF-8

unix下是: --locale=zh_CN.UTF-8

当然,你不在乎locale,那就无所谓,毕竟对汉字排序在应用中要求不高。我们的主题是“完美主义”。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PostgreSQL设置中文需要进行以下几个步骤: 1. 修改 PostgreSQL 配置文件:找到 postgresql.conf 配置文件,一般位于 PostgreSQL 安装目录下的 data 目录中,使用文本编辑器打开该文件,找到以下配置项并修改: ``` #lc_messages = 'C' # locale for system error message #lc_monetary = 'C' # locale for monetary formatting #lc_numeric = 'C' # locale for number formatting #lc_time = 'C' # locale for time formatting ``` 将上述配置项的值修改为中文对应的值,例如: ``` lc_messages = 'zh_CN.UTF-8' # 系统错误信息的本地化语言 lc_monetary = 'zh_CN.UTF-8' # 货币格式化的本地化语言 lc_numeric = 'zh_CN.UTF-8' # 数字格式化的本地化语言 lc_time = 'zh_CN.UTF-8' # 间格式化的本地化语言 ``` 2. 重启 PostgreSQL:修改完配置文件后,需要重启 PostgreSQL 才能生效。 3. 创建中文数据库:通过 SQL 语句创建一个中文数据库,并且设置数据库编码为 UTF-8: ``` CREATE DATABASE mydatabase WITH ENCODING 'UTF8' LC_COLLATE 'zh_CN.UTF-8' LC_CTYPE 'zh_CN.UTF-8'; ``` 其中 mydatabase 为要创建的数据库名称。 4. 创建中文表:在中文数据库中创建表,需要将表的编码设置UTF-8: ``` CREATE TABLE mytable ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, age INTEGER NOT NULL ) WITH (OIDS=FALSE) TABLESPACE pg_default; ALTER TABLE mytable OWNER TO myuser; ALTER TABLE mytable SET TABLESPACE pg_global; ALTER TABLE mytable SET ENCODING 'UTF8'; ``` 其中 mytable 为要创建的表名称,myuser 为表的所有者。 通过以上步骤,就可以在 PostgreSQL设置中文,并且创建中文数据库和中文表了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值