Thread: Collate problem when using ORDER BY
Hi,
I'm new here. I work on a site that uses postgres version 8.1.5 and database encoding ISO_8859_8. When I sort select requests using order by the "weight" of the characters seem to be really funny (but consistent). It seems to me that if I create a "phantom" converted field such as:
SELECT field convert(field, "ISO_8859_8" ,"UTF8") as field_utf8 ORDER BY field_utf8;
Then the sort will be OK however, I get the error:
Query failed: ERROR: character 0xd7 of encoding "ISO_8859_8" has no equivalent in "UTF8".
Is it due to a "bad" character in the content?
Can I get rid of it like find/replace?
Can I change collate for a given table/database?
I'm new here. I work on a site that uses postgres version 8.1.5 and database encoding ISO_8859_8. When I sort select requests using order by the "weight" of the characters seem to be really funny (but consistent). It seems to me that if I create a "phantom" converted field such as:
SELECT field convert(field, "ISO_8859_8" ,"UTF8") as field_utf8 ORDER BY field_utf8;
Then the sort will be OK however, I get the error:
Query failed: ERROR: character 0xd7 of encoding "ISO_8859_8" has no equivalent in "UTF8".
Is it due to a "bad" character in the content?
Can I get rid of it like find/replace?
Can I change collate for a given table/database?
-- Regards. David Harel, ================================== Home office +972 77 7657645 Fax: +972 77 7657645 Cellular: +972 54 4534502 Snail Mail: Amuka D.N Merom Hagalil 13802 Israel Email: hareldvd@ergolight-sw.com
David Harel napsal(a): > Hi, > > I'm new here. I work on a site that uses postgres version 8.1.5 and > database encoding ISO_8859_8. When I sort select requests using order by > the "weight" of the characters seem to be really funny (but consistent). > It seems to me that if I create a "phantom" converted field such as: > SELECT field convert(field, "ISO_8859_8" ,"UTF8") as field_utf8 ORDER BY > field_utf8; > Then the sort will be OK however, I get the error: > Query failed: ERROR: character 0xd7 of encoding "ISO_8859_8" has no > equivalent in "UTF8". > > Is it due to a "bad" character in the content? > Can I get rid of it like find/replace? > Can I change collate for a given table/database? > You can use only one encoding per database. It means you convert data from UTF8 to ISO_8859_8, but you store it back into UTF8 encoded field. Probably strcoll function is confused with illegal UTF8 character which has been created by your conversion. Zdenek