develooper Front page | perl.dbi.dev | Postings from May 2011

Decoding data from the database in DBD

Thread Next
From:
Martin J. Evans
Date:
May 9, 2011 11:43
Subject:
Decoding data from the database in DBD
Message ID:
4DC835AD.7030109@easysoft.com
I've recently had an rt posted 
(http://rt.cpan.org/Public/Bug/Display.html?id=67994) after a discussion 
on stackoverflow 
(http://stackoverflow.com/questions/5912082/automatic-character-encoding-handling-in-perl-dbi-dbdodbc).

In this case the Perl script is binding the columns but the data 
returned is windows-1252 and the user is having to manually 
Encode::decode all bound columns. DBD::ODBC already had a odbc_utf8_on 
flag 
(http://search.cpan.org/~mjevans/DBD-ODBC-1.29/ODBC.pm#odbc_utf8_on) for 
a derivative of Postgres which returns bound data UTF-8 encoded but in 
that case I can just call sv_utf8_decode (in the XS) and it is converted 
in place. Initially I thought I could combine odbc_utf8_on into a new 
flag saying my data is returned as xxx and just call Encode::decode with 
xxx (then eventually I could drop odbc_utf8_on).

However, Encode::decode converts a scalar returning a new scalar (not 
converted in place). Just wondered if anyone else has had to do this. 
I've never called a module method from XS so I got some pointers at 
http://www.perlmonks.org/?node_id=903729 which are useful but I'm still 
wondering how anyone else has solved this before I try and implement 
something.

Thanks

Martin

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About