Обсуждение: PLPERL function error - utf-8 to iso8859-1

Поиск
Список
Период
Сортировка

PLPERL function error - utf-8 to iso8859-1

От
"Patrick Hatcher"
Дата:
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

Re: PLPERL function error - utf-8 to iso8859-1

От
Tom Lane
Дата:
"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

Re: PLPERL function error - utf-8 to iso8859-1

От
"Patrick Hatcher"
Дата:
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