public inbox for [email protected]  
help / color / mirror / Atom feed
From: Igor Korot <[email protected]>
To: [email protected]
Subject: Re: PQexecPrepared() question
Date: Sun, 21 Dec 2025 17:30:38 -0800
Message-ID: <CA+FnnTxVZ64Lrq3t35j7w8mE=oP94TgetT62+Y8=ea_VfE2uEw@mail.gmail.com> (raw)
In-Reply-To: <6uz5ppdgqhlovw3df2dmzgzrfbfmmy5pys37ln7u4kyidaftgo@gxgkvkbwk3zh>
References: <[email protected]>
	<CA+FnnTxO6kam9=mRonvsnUA1OxJxdDdQsj+ubdgFNNb9b3WMPQ@mail.gmail.com>
	<[email protected]>
	<CA+FnnTzE34VJWR7xkymaKEwXiiQ8j3o03m0+qcQsRr2JkRQLwQ@mail.gmail.com>
	<[email protected]>
	<CA+FnnTz5tcJEL12ir1nxe9q75rxaAdfBtcFUNiD4R5gW_JR23A@mail.gmail.com>
	<CA+FnnTyYBNwbzFs5GqO+SMg3g60jPTsnmFwTV=_s_YboGo-68A@mail.gmail.com>
	<[email protected]>
	<CA+FnnTwtd-YJo5zp3obQer3qfbacg5s-4b3+5PvUkL3e+5Eh4Q@mail.gmail.com>
	<[email protected]>
	<6uz5ppdgqhlovw3df2dmzgzrfbfmmy5pys37ln7u4kyidaftgo@gxgkvkbwk3zh>

Hi,

On Sun, Dec 21, 2025 at 1:19 PM Peter J. Holzer <[email protected]> wrote:
>
> On 2025-12-21 00:39:23 -0500, Tom Lane wrote:
> > Igor Korot <[email protected]> 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 ;-).

Maybe all I need is something like this:

convert(char *dest, const std::wstring src)
{
    const wchar_t *temp = src.c_str();
    while( *dest )
    {
        dest++;
    }
    while( *temp )
    {
        *dest = *temp;
        dest++;
        temp++;
    }
    *dest++ = '\0';
    *dest = '\0';
}

?

Thank you.



>
>         hjp
>
> --
>    _  | Peter J. Holzer    | Story must make more sense than reality.
> |_|_) |                    |
> | |   | [email protected]         |    -- Charles Stross, "Creative writing
> __/   | http://www.hjp.at/ |       challenge!"






view thread (19+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: PQexecPrepared() question
  In-Reply-To: <CA+FnnTxVZ64Lrq3t35j7w8mE=oP94TgetT62+Y8=ea_VfE2uEw@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox