The following short function illustrates a problem I'm having with the plperlu module.
doublezero ()
RETURNS VOID
AS $$
use Encode qw/encode decode/;
$pass = "double00";
elog( INFO, "$pass" );
$mspass = encode( 'UTF-16LE', qq("$pass") );
elog( INFO, "$mspass" );
$$ LANGUAGE plperlu
STRICT;
# select * from doublezero();
INFO: double00
CONTEXT: PL/Perl function "doublezero"
ERROR: invalid byte sequence for encoding "UTF8": 0x00 at line 8, <DATA> line 558.
CONTEXT: PL/Perl function "doublezero"
INFO: double00
CONTEXT: PL/Perl function "doublezero"
ERROR: invalid byte sequence for encoding "UTF8": 0x00 at line 8, <DATA> line 558.
CONTEXT: PL/Perl function "doublezero"
I don't understand this. I need to pass $mspass to Active Directory, and it the encoding is exactly as it should be, which is to say, it works for strings that don't include two consecutive zeros. Is this a bug?
-R-