Re: libpq - characterset encoding error from selecting BYTEA

From: CN <cnliou9(at)fastmail(dot)fm>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: libpq - characterset encoding error from selecting BYTEA
Date: 2016-03-15 14:40:07
Message-ID: 1458052807.2085089.549773330.2CD59643@webmail.messagingengine.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

On Tue, Mar 15, 2016, at 09:57 PM, Tom Lane wrote:
> > PGconn* first switches to "BIG5" client encoding:
> > PQexec(conn,"SET CLIENT_ENCODING TO BIG5");
>
> > version 1:
>
> > const char *pValues[]={"5","6"};
> > PGresult *r=PQexecParams(conn,"SELECT c3::BYTEA FROM t1 WHERE c1=$1 AND
> > c2=$2",2,NULL,pValues,NULL,NULL,1);
>
> > What is strange is that above PQexecParams() works in one portion of my
> > program but in another portion it yields the following error:
>
> > ERROR: character with byte sequence 0x98 0xe1 in encoding "BIG5" has no
> > equivalent in encoding "UTF8"
>
> Given the way the complaint is phrased, the problem is with data going
> *to* the server, not *from* the server. I don't think the returned bytea
> is your issue at all; it must be either in the SQL query string or the
> parameter values being sent. Probably you should review how you're
> setting up the parameter strings.

Thanks a lot for your always prompt and professional help!

I must have made the unforgivable mistake - miss using temporary, like
so:

std::ostringstream oss1,oss2;
oss1 << 5;
oss2 << 6;
const char *pValues[]={oss1.str().c_str(),oss2.str().c_str()};
PGresult *r=PQexecParams(conn,"SELECT c3 FROM t1 WHERE c1=$1 AND
c2=$2",2,NULL,pValues,NULL,NULL,1);

Humm... Maybe it is my compiler's issue. Maybe I should take a break
now.

Anyway, the error seems to be gone with the following slightly modified
version:

std::ostringstream oss1,oss2;
oss1 << 5;
oss2 << 6;
std::string s1(oss1.str()),s2(oss2.str());
const char *pValues[]={s1.c_str(),s2.c_str()};
PGresult *r=PQexecParams(conn,"SELECT c3 FROM t1 WHERE c1=$1 AND
c2=$2",2,NULL,pValues,NULL,NULL,1);

Best Regards,
CN

--
http://www.fastmail.com - Or how I learned to stop worrying and
love email again

In response to

Browse pgsql-interfaces by date

  From Date Subject
Next Message Marco Bambini 2016-04-25 07:58:48 Error: no connection to the server
Previous Message Tom Lane 2016-03-15 13:57:11 Re: libpq - characterset encoding error from selecting BYTEA