У меня очень простой Perl-скрипт, который работает прямо на терминале, но при запуске в виде CGI-скрипта он создает мусор.Сценарий в основном берет закодированные данные HTML-сущностей и преобразует их для печати.Я пробовал все различные настройки, такие как «Кодировать», чтобы изменить вывод и установить STDOUT в режим utf8, и это не помогает.Я также попытался изменить среду CGI, чтобы посмотреть, будет ли все работать так же, как среда терминала.Все еще не повезло.
Вот скрипт
#!/usr/bin/perl
use HTML::Entities qw(encode_entities_numeric decode_entities);
use Encode qw/encode decode/;
binmode(STDOUT, ":utf8");
#$ENV{'PERL_UNICODE'} = 'D';
#$ENV{'LANG'} = 'en_US.UTF-8';
#$ENV{'TERM'} = 'vt100';
#$ENV{'SHELL'} = '/bin/bash';
#binmode(STDOUT, ":utf8");
print "Content-type: text/html\n\n";
my $y = decode_entities("Συστήματα_&#x
391;νίχνευσης_Εισ.pd
f");
#print encode("UTF8",$y);
print $y;
Вывод на терминал чистый, как perl test.pl Тип контента: text / html
Συστήματα_Ανίχνευσης_Εισ.pdf
Но на распечатке CGI она искажена Î £ Ï… ÏƒÏ „Î · ÌμΠ± Ï„ Î ± _Î'νιÌÏ ‡ νευ σΠ· Ï‚_Î • ισ.pdf
Я вродезастрял как я не могу найти простой способ решить эту проблему.Пробовал "encode_utf8" и utf8 :: upgrade переменной, но все равно не повезло.Любой опыт здесь очень поможет!
Спасибо, Виджай