| From: | "Peter J(dot) Holzer" <hjp-pgsql(at)hjp(dot)at> |
|---|---|
| To: | pgsql-general(at)lists(dot)postgresql(dot)org |
| Subject: | Re: PQexecPrepared() question |
| Date: | 2025-12-21 21:19:25 |
| Message-ID: | 6uz5ppdgqhlovw3df2dmzgzrfbfmmy5pys37ln7u4kyidaftgo@gxgkvkbwk3zh |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
On 2025-12-21 00:39:23 -0500, Tom Lane wrote:
> Igor Korot <ikorot01(at)gmail(dot)com> writes:
> > I added the following code in my app:
> > res = PQexec( m_db, "SHOW client_encoding" );
> > auto value = PQgetvalue( res, 0, 0 );
> > PQclear( res );
> > and the value of the "value" variable is "UTF8".
>
> Okay ...
>
> > The exact error message is:
> > ERROR: invalid byte sequence for encoding UTF8: 0xdf
> > CONTEXT: unnamed portal parameter $1
> > on the INSERT.
>
> client_encoding governs both the encoding that the server will
> send, and the encoding that it expects to receive. You are
> sending a parameter string that is not valid UTF8.
As I see it, Igor has two options:
1) Send UTF8. wcstombs is the wrong tool for this, since it uses the
current locale which is obviously not using UTF-8. I don't program in
C++, but I'm pretty sure there is a portable way to encode a string
in UTF-8.
2) Figure out which encoding his locale is using and then set
client_encoding appropriately. The first step to do that is to find
the current locale.
Igor, add
#include <ctype.h>
...
char *current_locale = setlocale(LC_CTYPE, "");
to your code. What's the value of current_locale?
I think 1) is the better strategy, but them I've been a UTF-8 fan-boy
for over 30 years ;-).
hjp
--
_ | Peter J. Holzer | Story must make more sense than reality.
|_|_) | |
| | | hjp(at)hjp(dot)at | -- Charles Stross, "Creative writing
__/ | http://www.hjp.at/ | challenge!"
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Igor Korot | 2025-12-22 01:30:38 | Re: PQexecPrepared() question |
| Previous Message | Igor Korot | 2025-12-21 19:44:49 | Re: PQexecPrepared() question |