>>>>> "Torsten" == Torsten Förtsch <torsten.foert...@gmx.net> writes:
Torsten> Though, I wouldn't go this way. I'd either try to force CGI.pm to read Torsten> from STDIN and use the perl-script handler Torsten> (http://perl.apache.org/docs/2.0/user/config/config.html#C_perl_script_). This Torsten> pushes a PerlIO layer to STDIN so that you can read from STDIN. On top Torsten> of that you can push :utf8 then. Yeah, just coded that. In a BEGIN block in my app, I monkey-patched read_from_client: BEGIN { ## monkey-patch CGI.pm so we can get proper utf8 handling require CGI; CGI::_compile_all(qw( read_from_client )); # warn "defined &CGI::read_from_client is ", 0 + defined &CGI::read_from_client; ## moose 'around' would be nice here. :) my $read_from_client = \&CGI::read_from_client; no warnings 'redefine'; *CGI::read_from_client = sub { local $CGI::MOD_PERL = $CGI::MOD_PERL; warn "prior MOD_PERL is $CGI::MOD_PERL"; if (our $USE_STDIN_FOR_MOD_PERL) { $CGI::MOD_PERL = 0; } warn "after MOD_PERL is $CGI::MOD_PERL"; goto &$read_from_client; } } And in my toplevel, I now do this: sub activate { my $self = shift; require Carp; local $SIG{__DIE__} = \&Carp::confess; ## ensure utf8 CGI params: local $CGI::PARAM_UTF8 = 1; ## and disable mod_perl handling during read_from_client local our $USE_STDIN_FOR_MOD_PERL = 1; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8"; binmode STDERR, ":utf8"; return $self->SUPER::activate(@_); } (This is my CGI::Prototype-based code, from the CPAN...) I'm properly getting the $CGI::MOD_PERL set to 0, which forces read from STDIN (via $r) instead of the native STDIN. In theory. In practice, even though I've done a binmode STDIN, I'm still getting raw bytes from read(\*STDIN...), not utf8-tagged strings. Not sure what to do next. Still frustrated. Why can't the world just use ASCII? :) (I even tried binmode STDIN, "encoding(utf8)" just now as well.) -- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 <mer...@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/> Perl/Unix consulting, Technical writing, Comedy, etc. etc. Still trying to think of something clever for the fourth line of this .sig