Thread: PLPERL function error - utf-8 to iso8859-1
Trying to create a plperl function to strip non-friendly mainframe characters from a string. However, when I try to add the Trademark symbol (™) as a replace criteria, PG spits back an error: ERROR: Could not convert UTF-8 to ISO8859-1 Any way I get around this? CREATE OR REPLACE FUNCTION public.mainframe_description(varchar) RETURNS varchar AS ' my($desc) = @_; $desc =~ s/®//g; $desc =~ s//e/g; $desc =~ s/ô/o/g; $desc =~ s/æ/E/g; $desc =~ s/Ò/ /g; $desc =~ s/Ó/ /g; $desc =~ s/è/e/g; $desc =~ s/Ô//g; $desc =~ s/É/E/g; $desc =~ s/°//g; $desc =~ s/é/e/g; $desc =~ s/~Y//g; $desc =~ s/Ö//g; /*Error happens here */ $desc =~ s/™//g; return $desc; ' LANGUAGE 'plperl' VOLATILE; COMMENT ON FUNCTION public.mainframe_description(varchar) IS 'Return a clean description for mainframe input'; TIA Patrick Hatcher
"Patrick Hatcher" <PHatcher@macys.com> writes: > Trying to create a plperl function to strip non-friendly mainframe > characters from a string. However, when I try to add the Trademark symbol > (™) as a replace criteria, PG spits back an error: > ERROR: Could not convert UTF-8 to ISO8859-1 AFAICT this means that the trademark symbol is not in the character set that you've specified to be used in the database; accordingly there's no need to try to prevent it from being stored... Perhaps you should have selected the database encoding to be the same as what you're using on the client side. regards, tom lane
Ah there in lies the problem. I have my database encoding set to LATIN1 and I have this value stored in my table and can even write SQL to search against it: select * from mdc_products where description ~* '?' Patrick Hatcher Macys.Com Legacy Integration Developer 415-422-1610 office HatcherPT - AIM Tom Lane <tgl@sss.pgh.p To: "Patrick Hatcher" <PHatcher@macys.com> a.us> cc: pgsql-general@postgresql.org Subject: Re: [GENERAL] PLPERL function error - utf-8 to iso8859-1 10/14/2003 09:07 PM "Patrick Hatcher" <PHatcher@macys.com> writes: > Trying to create a plperl function to strip non-friendly mainframe > characters from a string. However, when I try to add the Trademark symbol > (â"¢) as a replace criteria, PG spits back an error: > ERROR: Could not convert UTF-8 to ISO8859-1 AFAICT this means that the trademark symbol is not in the character set that you've specified to be used in the database; accordingly there's no need to try to prevent it from being stored... Perhaps you should have selected the database encoding to be the same as what you're using on the client side. regards, tom lane