ibaobei 发表于 2016-11-21 03:48:11

完美主义,用PostgreSQL,要设置好locale

utf8作字符集,无可争议,因为pg不支持GBK和GB18030作字符集
    还有一个参数locale
    在安装windows版会让你指定locale,如果选择"default locale"就会安装不正确。这个现象好像从8.2版的windows安装包开始出现。
    选什么呢?查看一下下拉框,只有4个中文:中文香港、中文新加坡、中文台湾、中文澳门
    对我们有用吗?
    来做一个实验
都运行如下代码
create tablex (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]
查看完整版本: 完美主义,用PostgreSQL,要设置好locale