BUG #2071: ERROR: invalid multibyte character for locale

Started by Prakash Nairover 20 years ago4 messagesbugs
Jump to latest
#1Prakash Nair
prakashblr@hotmail.com

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

#2tomas@tuxteam.de
tomas@tuxteam.de
In reply to: Prakash Nair (#1)
Re: BUG #2071: ERROR: invalid multibyte character for locale

On Fri, Nov 25, 2005 at 11:55:44AM +0000, Prakash Nair wrote:

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)

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=us_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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: tomas@tuxteam.de (#2)
Re: BUG #2071: ERROR: invalid multibyte character for locale

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

#4Prakash Nair
prakashblr@hotmail.com
In reply to: Tom Lane (#3)
Re: BUG #2071: ERROR: invalid multibyte character for locale

<html><div style='background-color:'><DIV class=RTE>
<P>Thanks All.</P>
<P>I have got a solution. When we give initdb, given it with --locale=C and created database with 'UNICODE'. </P>
<P>This one worked. as of now everything seems to be working. I hope , there wont be any issues, please let me know, if you have any suggestions.</P>
<P>Thanks,</P>
<P>Prakash.<BR><BR></P></DIV>
<DIV></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #a0c6e5 2px solid; MARGIN-RIGHT: 0px"><FONT style="FONT-SIZE: 11px; FONT-FAMILY: tahoma,sans-serif">
<HR color=#a0c6e5 SIZE=1>

<DIV></DIV>From:&nbsp;&nbsp;<I>Tom Lane &lt;tgl@sss.pgh.pa.us&gt;</I><BR>To:&nbsp;&nbsp;<I>tomas@tuxteam.de (Tomas Zerolo)</I><BR>CC:&nbsp;&nbsp;<I>Prakash Nair &lt;prakashblr@hotmail.com&gt;, pgsql-bugs@postgresql.org</I><BR>Subject:&nbsp;&nbsp;<I>Re: [BUGS] BUG #2071: ERROR: invalid multibyte character for locale</I><BR>Date:&nbsp;&nbsp;<I>Sat, 26 Nov 2005 11:21:11 -0500</I><BR>tomas@tuxteam.de (Tomas Zerolo) writes:<BR>&gt; - What is the nevironment of the server process? That is: what does the<BR>&gt;&nbsp;&nbsp; shell command 'locale' say when it is issued in the same environment<BR>&gt;&nbsp;&nbsp; as the server starts? (that is not necessarily the environment you get<BR>&gt;&nbsp;&nbsp; if you start a shell!). Try, e.g. putting ''export LANG=us_US.UTF-8''<BR>&gt;&nbsp;&nbsp; just before the server is called (typically in /etc/init.d/postgresql<BR>&gt;&nbsp;&nbsp; or
thereabout.<BR><BR>In recent PG versions you can do SHOW LC_COLLATE and/or SHOW LC_CTYPE<BR>to verify the locale settings the server is using.&nbsp;&nbsp;Note that these are<BR>locked down based on the environment seen by initdb --- you can't change<BR>them just by inserting an environment setting into the postmaster start<BR>script.<BR><BR>regards, tom lane<BR><BR>---------------------------(end of broadcast)---------------------------<BR>TIP 3: Have you checked our extensive FAQ?<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.postgresql.org/docs/faq&lt;BR&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;/div&gt;&lt;/html&gt;