Hi all,
I have 2 linux distro —— ubuntu and centos.
My problem is that the sort command has different behavior when
sorting Chinese string encoded in utf8 file.
On Ubuntu, it is OK. But on CentOS, it WRONG.
I google this problem and it seems that's because of LC_COLLATE.
So I change "/etc/sysconfig/i18n" on CentOS and now the 2 have the
same LC_** like this:
CentOS:
=============================
[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE=zh_CN.UTF-8
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-
I have 2 linux distro —— ubuntu and centos.
My problem is that the sort command has different behavior when
sorting Chinese string encoded in utf8 file.
On Ubuntu, it is OK. But on CentOS, it WRONG.
I google this problem and it seems that's because of LC_COLLATE.
So I change "/etc/sysconfig/i18n" on CentOS and now the 2 have the
same LC_** like this:
CentOS:
=============================
[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE=zh_CN.UTF-8
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-
8"
LC_ALL=
Ubuntu
=============================
peter@ubuntu:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
But, the result is still incorrect on CentOS! I almost got crazy!!!
PS: the background of this problem is that Postgresql's "order by"
command depends on the sort result of the OS.
LC_ALL=
Ubuntu
=============================
peter@ubuntu:~$ locale
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
But, the result is still incorrect on CentOS! I almost got crazy!!!
PS: the background of this problem is that Postgresql's "order by"
command depends on the sort result of the OS.
_______________________________________________ CentOS mailing list CentOS@xxxxxxxxxx http://lists.centos.org/mailman/listinfo/centos