Mark D. Grand wrote:
> I am having a vexing problem with a script I am writing to
> populate reference tables in a new database.
>
> I am running postgreSQL 8.3 with psql 8.3.7.
>
> Psql reads this SQL statement:
>
> INSERT INTO META_AUTH.DOMAIN_META_ASSERTION (TITLE, DESCRIPTION, META_ASSERTION)
> VALUES ('Super-User Authorization',
> 'This allows a super-user to administer all meta-data.',
> 'UserID «Administer» ()');
>
> and I get this message:
>
> ERROR: invalid byte sequence for encoding "UTF8": 0xab
>
> HINT: This error can also happen if the byte sequence does
> not match the encoding expected by the server, which is
> controlled by "client_encoding".
>
> It is complaining about the '«' character. I do not
> understand why. The database is created the commands
>
> CREATE DATABASE mayyou
> WITH OWNER=meta_auth ENCODING='UTF8';
>
> ALTER DATABASE mayyou SET client_encoding = 'UTF8';
>
> When I give psql the \encoding command, it replies
> UTF8
>
> Why is it complaining about this valid character code?
The database stores characters in UTF-8, and the client
expects UTF-8 characters, but presumably the characters you
feed into psql are not UTF-8.
If this is some kind of UNIX, it might be instructive to
type 'echo "«" | od -t x1' on the command line.
Also knowing the current locale might help to determine the problem.
Yours,
Laurenz Albe