PLPERL function error - utf-8 to iso8859-1

Started by Patrick Hatcherover 22 years ago3 messagesgeneral
Jump to latest
#1Patrick Hatcher
PHatcher@macys.com

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Patrick Hatcher (#1)
Re: PLPERL function error - utf-8 to iso8859-1

"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

#3Patrick Hatcher
PHatcher@macys.com
In reply to: Tom Lane (#2)
Re: PLPERL function error - utf-8 to iso8859-1

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