At first, thanks for your reply!
Did you check if CGI::Fast returns text strings (i.e. with UTF-8 flag set)?
No, as I don't know spontaneously how.
use open ':utf8' only affects open (iirc), so it's useless you unless open files.
Ok. But, mh, what about caches, like File::Cache? Should I turn :utf8 for open on when I use these or will the module handle it internally?
Do you use binmode STDOUT, ':utf8';?
I did, actually I used
binmode STDOUT, ":encoding(utf8)";. But then it seems to break CGI-Application-Plugin-CompressGzip! (more hair pulling..) Should I set it again? And, should I also set again
binmode STDIN, ":encoding(utf8)" (or is this redundant with my
my $param_f = decode("utf8", $q->param("f") ) procedure??
Don't use Encode::_utf8_on($flagOn); - it's an internal method of the Encode module, and shouldn't be called from the outside. Use <c>$string = decode_utf8 $string; instead.
I know. But I inspected the returned strings (
local $Data::Dumper::Useqq = 1;) and found out they were properly formed utf8. Until they pass trought the final stages of CGI::Application, which broke them again. So I tried various solutions and found out that yes, the string was proper utf8 but without the flag on. When I switched it on manually, C::A left them alone and seem to pass it till the browser stage. (you see, I am deeply woven in trouble...)
update:I now use decode_utf8 and it works just as good.
Regarding testdata
I tested with a 30K tar.gz, a 1K perl script and a 500K mp3 file - each the same problem, they sometimes come through..