That's interesting. What I'm really doing, instead of the second elog statement, is this:
$ret = $ldap->modify( $dn, replace => { unicodePwd => $mspass } ); This does work for strings that don't contain consecutive zeroes. I'm not really passing the string to PostgreSQL, but to Net::LDAP, but it must hit PostgreSQL anyway? Active Directory requires this encoding, so I'm not sure what to do here. On Wed, Jul 15, 2015 at 11:57 AM, Daniel Verite <dan...@manitou-mail.org> wrote: > Ronald Peterson wrote: > > > # 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" > > > > 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? > > When replacing the literal "double00" with "foobar" in your function, > the same error occurs for me: > > test=# select doublezero(); > INFO: foobar > CONTEXT: PL/Perl function "doublezero" > ERROR: invalid byte sequence for encoding "UTF8": 0x00 at line 6. > CONTEXT: fonction PL/Perl « doublezero » > > Anyway it's not clear what you expect. PG doesn't support UTF-16, > and even if it did, it wouldn't accept such strings when the current > encoding is UTF-8. > If Active Directory wants UTF-16LE, you have to do that conversion, but > don't pass the result back to postgres in this format. > > > Best regards, > -- > Daniel > PostgreSQL-powered mail user agent and storage: > http://www.manitou-mail.org > -- -R-