Hi Gisle, I'm not sure I'd consider this a bug, bit it did make for some very noisy web logs.
In URI::_init there's this substitution: $str =~ s/([^$uric\#])/$URI::Escape::escapes{$1}/go; I ended up with some utf8 in a URI and received warnings: Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm at line 75 (or so) $URI::Escape::escapes is keyed like this: for (0..255) { $escapes{chr($_)} = sprintf("%%%02X", $_); } But if there's utf8 in the string the substitution will return unicode characters. For example, if I hack in some debugging lines into _init: warn " [$str] " . (Encode::is_utf8( $str ) ? "is utf8\n" : "is not utf8\n"); my $x = $str; $x =~ s/([^$uric\#])/'[' . ord($1) . ']'/ge; warn "x= '$x'\n"; $str =~ s/([^$uric\#])/$URI::Escape::escapes{$1}/go; And pass in some random utf-8: [Платить] is utf8 x= '[1055][1083][1072][1090][1080][1090][1100]' Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. Use of uninitialized value in substitution iterator at /usr/share/perl5/URI.pm line 80. -- Bill Moseley [EMAIL PROTECTED]