adding utf8::decode($_[0]) solves the problem:

knn=# CREATE OR REPLACE FUNCTION url_decode(Vkw varchar) RETURNS varchar  AS $$
    use strict;
    use URI::Escape;
    utf8::decode($_[0]);
return uri_unescape($_[0]); $$ LANGUAGE plperlu;

Oleg
On Wed, 8 Dec 2010, Andrew Dunstan wrote:



On 12/08/2010 10:13 AM, Oleg Bartunov wrote:
Hi there,

below is the problem, which I don't have when running in shell. The database is in UTF-8 encoding.

CREATE OR REPLACE FUNCTION url_decode(Vkw varchar) RETURNS varchar  AS $$
    use strict;
    use URI::Escape;
    return uri_unescape($_[0]); $$ LANGUAGE plperlu;
CREATE FUNCTION
Time: 1.416 ms
select url_decode('comment%20passer%20le%20r%C3%A9veillon');
          url_decode ------------------------------
 comment passer le rveillon
                  ^
                 non-printed


I get: (platform is Fedora 13, git tip, perl 5.10.1):

  andrew=# CREATE OR REPLACE FUNCTION url_decode(Vkw varchar) RETURNS
  varchar  AS $$
  andrew$#     use strict;
  andrew$#     use URI::Escape;
  andrew$#     return uri_unescape($_[0]); $$ LANGUAGE plperlu;
  CREATE FUNCTION
  andrew=# select url_decode('comment%20passer%20le%20r%C3%A9veillon');
             url_decode
  ------------------------------
    comment passer le r?©veillon
  (1 row)

  andrew=#

which makes it look like we might have some double escaping going on here, but at least I don't get nothing :-)

Further experimentation shows even more weirdness. There's definitely something odd about the utf8 handling. Will dig further.

cheers

andrew




        Regards,
                Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: o...@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to