genkuro (AT) gmail (DOT) com wrote:
Quote:
A Tomcat frontend is logging the following error. The backend is
Postgres 8.1.
ERROR: character 0xc582 of encoding "UTF8" has no equivalent in
"LATIN9"
I understand this message to say that the database supports LATIN9
(probably a parameter specified at creation time) and some user put in
a UTF-8 character which failed to translate. |
It could mean two things:
First, that your database is UTF8, your client uses
LATIN9, and you are trying to retrieve a character (Polish lower case l
with stroke; the unpronouncable) from the database that does not exist in
LATIN9 and consequently cannot be converted.
Second, it could be that your database is LATIN9 and your client is
configured to use UTF8, and you are trying to store a Polish lower case l
with stroke in the database.
To find out which of the two is the case, run the following two
commands:
SHOW server_encoding;
SHOW client_encoding;
In the first case, the solution is simple:
Change the client encoding to something that contains the Polish letter
in question, e.g. LATIN2 or WIN1250.
In the second case, if you need to store this character, you'll have to
create a new database with an encoding that contains the character.
Quote:
Can I define the database to support /unicode/ ... that is, the entire
character space? Would that be UTF-16? |
As has been explained, UTF-8 can encode every UNICODE character.
Quote:
I understand I have to scrap the current database to do that. I have
to export data. Get rid of the old database. Create a new database
of the same name and proper encoding. And import data. Is this
correct? |
Yes, in the second case mentioned above.
Yours,
Laurenz Albe