Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Net::LDAP and utf-8 issues

by Skeeve (Vicar)
on Jul 15, 2013 at 08:44 UTC ( #1044325=note: print w/replies, xml ) Need Help??


in reply to Net::LDAP and utf-8 issues

Just for completeness. I think I found the reason for the problem. See below.

So here is a small example of my script having problems with utf-8.

use strict; use warnings; use Net::LDAP; # binmode STDOUT, ':utf8'; # <- If this is active, output is corrupted my $ldap_host= '...myhost...'; my $ldap_port= ...myport...; my $ldap_user= '...myuser...'; my $ldap_pass= '...mypass...'; my $ldap = Net::LDAP->new( $ldap_host, port => $ldap_port, raw => qr/(?i:^jpegPhoto|;binary)/, ) or die "$@"; my $mesg = $ldap->bind( $ldap_user, password => $ldap_pass, ); if ($mesg->is_error) { die $mesg->error_text; } $mesg= $ldap->search( base => '...mybase...', filter => 'uid=...myuser...', attrs => [ qw/ cn / ] ); if ($mesg->is_error) { die $mesg->error_text; } my $result= $mesg->as_struct; while (my($id, $data)= each %$result) { print $data->{'cn'}->[0], "\n"; } $ldap->unbind;

Output is okay without the binmode STDOUT, ':utf8';:

$ ./ldap-test.pl Jrg $ ./ldap-test.pl | od -xc 0000000 f64a 6772 000a J 366 r g \n 0000005
But with that line I get:
$ ./ldap-test.pl Jörg $ ./ldap-test.pl | od -xc 0000000 c34a 72b6 0a67 J 303 266 r g \n 0000006

Assumption: The UTF-8 Conversion is okay, but my Cygwin rxvt Terminal is too dumb. It's not expecting UTF-8 but some WinDOS encodeing.

When I switch to an xterm and enable UTF-8 encoding there, output seems okay.


s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1044325]
help
Chatterbox?
[ambrus]: Corion: as for that, I talked with schmorp, and looked a bit more at Prima
[ambrus]: Corion: from the docs, it definitely looks like it would be possible to write an AnyEvent driver for it using Prima::File and Prima::Timer.
[ambrus]: (I haven't found an idle event.)
[ambrus]: However, I also looked at the internals, and found two interesting things:
[marto]: stupid xpath question, I have a xpath copied from the browser, is the * wildcard supposed to work for IDs? e.g. '//*[@id="*"]/ div/div/header/p/a '?
[ambrus]: The main loop for unixish systems is in https://metacpan. org/source/ KARASIK/Prima-1. 49/unix/apc_app.c. It is a hand-rolled select loop, but also always spins at least once every 0.2 seconds for some reason.

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2016-12-08 10:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (140 votes). Check out past polls.