Thread: BUG #2071: ERROR: invalid multibyte character for locale
The following bug has been logged online: Bug reference: 2071 Logged by: Prakash Nair Email address: prakashblr@hotmail.com PostgreSQL version: 8.0.4 Operating system: RHES Description: ERROR: invalid multibyte character for locale Details: Hello, Got the error in postgres console when we do a lower() or upper(). Postgres console gives following error, ERROR: invalid multibyte character for locale HINT: The server's LC_CTYPE locale is probably incompatible with the database encoding. Can any one please help me, I need to use Unicode encoding for my database. (Not able to upgrade to postgres 8.10. as I was getting someother issues when I try to restore database) Looks forward for anyone's fast reply. Thanks, Prakash
Re: BUG #2071: ERROR: invalid multibyte character for locale
From
tomas@tuxteam.de (Tomas Zerolo)
Date:
On Fri, Nov 25, 2005 at 11:55:44AM +0000, Prakash Nair wrote: >=20 > The following bug has been logged online: >=20 > Bug reference: 2071 > Logged by: Prakash Nair > Email address: prakashblr@hotmail.com > PostgreSQL version: 8.0.4 > Operating system: RHES > Description: ERROR: invalid multibyte character for locale > Details:=20 >=20 > Hello, >=20 > Got the error in postgres console when we do a lower() or upper(). >=20 > Postgres console gives following error, >=20 > ERROR: invalid multibyte character for locale > HINT: The server's LC_CTYPE locale is probably incompatible with the > database encoding. >=20 > Can any one please help me, I need to use Unicode encoding for my databas= e. > (Not able to upgrade to postgres 8.10. as I was getting someother issues > when I try to restore database) See the related, previous post. Basically there are four places where encoding might be relevant: - Did you create the database in utf-8 encoding? (probably yes) - What is the nevironment of the server process? That is: what does the shell command 'locale' say when it is issued in the same environment as the server starts? (that is not necessarily the environment you get if you start a shell!). Try, e.g. putting ''export LANG=3Dus_US.UTF-8'' just before the server is called (typically in /etc/init.d/postgresql or thereabout. - What is your client's encoding (issue the SQL command ''SHOW CLIENT_ENCODING'' to learn about that (or ''SET CLIENT_ENCODING'' to change that) - What is the locale of your client? (if it's on an unix-like system, see above. Otherwise I have no idea). Hope that helps -- tomas
tomas@tuxteam.de (Tomas Zerolo) writes: > - What is the nevironment of the server process? That is: what does the > shell command 'locale' say when it is issued in the same environment > as the server starts? (that is not necessarily the environment you get > if you start a shell!). Try, e.g. putting ''export LANG=us_US.UTF-8'' > just before the server is called (typically in /etc/init.d/postgresql > or thereabout. In recent PG versions you can do SHOW LC_COLLATE and/or SHOW LC_CTYPE to verify the locale settings the server is using. Note that these are locked down based on the environment seen by initdb --- you can't change them just by inserting an environment setting into the postmaster start script. regards, tom lane
Thanks All. I have got a solution. When we give initdb, given it with --locale=C and created database with 'UNICODE'. This one worked. as of now everything seems to be working. I hope , there wont be any issues, please let me know, if youhave any suggestions. Thanks, Prakash. From: Tom Lane <tgl@sss.pgh.pa.us>To: tomas@tuxteam.de (Tomas Zerolo)CC: Prakash Nair<prakashblr@hotmail.com>, pgsql-bugs@postgresql.orgSubject: Re: [BUGS] BUG #2071: ERROR: invalid multibytecharacter for localeDate: Sat, 26 Nov 2005 11:21:11 -0500tomas@tuxteam.de (Tomas Zerolo) writes:>- What is the nevironment of the server process? That is: what does the> shell command 'locale'say when it is issued in the same environment> as the server starts? (that is not necessarily theenvironment you get> if you start a shell!). Try, e.g. putting ''export LANG=us_US.UTF-8''> just before the server is called (typically in /etc/init.d/postgresql> or thereabout.In recent PG versions you can do SHOW LC_COLLATE and/or SHOW LC_CTYPEto verify the locale settings the serveris using. Note that these arelocked down based on the environment seen by initdb --- you can't changethemjust by inserting an environment setting into the postmaster startscript.regards, tom lane---------------------------(endof broadcast)---------------------------TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq