View Single Post

   
  #5 (permalink)  
Old 04-09-2008, 11:40 AM
stevegy
 
Posts: n/a
Default Re:    Hi,&nbs

Hi Martijn,

Thank you for the reply.

I think the locale settings is a diffrent in my case, and in the logical way, I guess the locale environs should be used by the program in the system C run-time library for the string operating functions such like comparing or something else like that.

I have login as user name 'postgres' and changed the LANG=zh_CN.UTF-8; export LANG and then the locale command output this:
========================================
-bash-3.00$ 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_ALL=
========================================
So, now i stop the postgres: pg_ctl stop -D ./data_euc_cn and start it use the UTF-8 encoding data directory: pg_ctl start -D ./data_utf8. But thesort result for the Chinese characters is still wrong. And I notice thatthe sort result is diffrent from the LANG=zh_CN.GB18030.

I think I still have not a direct way to solve this. Or, maybe, the postgres uses the locale settings from the other than the current postgres user?
Any suggestions?


-- Steve Yao



-----Ô*ʼÓʼþ-----
·¢¼þÈË:"Martijn van Oosterhout"
·¢ËÍʱ¼ä:2006-10-04 17:42:00
ÊÕ¼þÈË:"stevegy"
³*ËÍgsql-general@postgresql.org
Ö÷Ìâ:Re: [GENERAL] Hi, ever


On Wed, Oct 04, 2006 at 07:50:12AM +0800, stevegy wrote:

> My testing database is initdb -E UTF8. And i guess the solaris can


> not handle the UTF-8 sorting with the LC_COLLATE="zh_CN.GB18030". But


> i need to prove this.




A locale can only handle one charset, usually the one given by "locale

charset". So if it handles sorting in GB18030 then by definition it

can't handle UTF-8.



> So i plan to change the locale of my solaris box. I have installed


> the zh_CN.UTF8 on it. I am looking for a way to change the solaris


> locale. If this changing need to re-boot machine that I should do


> this in some not busy time for the live application.




The locale is not a global setting. If you set the LANG or LC_ALL

variable, it will change the locale of any program run with that

environment variable. The default is the "C" locale.



Have a nice day,

--

Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/

> From each according to his ability. To each according to his ability tolitigate.

Reply With Quote