Допустим, у меня есть этот код:
use strict;
use LWP qw ( get );
my $content = get ( "http://www.msn.co.il" );
print STDERR $content;
Журнал ошибок показывает что-то вроде "\ xd7 \ x9c \ xd7 \ x94 \ xd7 \ x93 \ xd7 \ xa4 \ xd7 \ xa1 \ xd7 \ x94"
что я думаю, это utf-16?
Кодировка сайта:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1255">
так почему появляются эти символы, а не символы windows-1255?
И еще одна странная вещь - у меня есть два сервера:
первый сервер, возвращающий символы CP1255, и я могу просто преобразовать его в utf8,
и текущий сервер дает мне эти символы, и я ничего не могу с этим поделать ...
есть ли файл конфигурации в apache / perl / module, который испортил кодировку?
принуждать что-то ...?
Результат на моем веб-сайте на втором сервере заключается в том, что perl-файл и заголовки являются utf8, поэтому, когда я пишу текст, который не является английским символом, содержимое из приведенного выше примера показывает нормально (даже если это странные символы utf), но мой собственный статический текст выглядит как «× ×», «× 1017 *
Еще одна вещь, которую я протестировал, это ...
Через Perl:
my $content = `curl "http://www.anglo-saxon.co.il"`;
Я получаю кодировку utf8.
Через Баш:
curl "http://www.anglo-saxon.co.il"
и вот я получаю кодировку CP1255 (Windows-1255) ...
Кроме того,
когда я запускаю скрипт в bash - он выдает CP1255, а когда запускаю его через веб - снова снова utf8 ...
исправил проблему, изменив содержимое с utf8 на то, что должно, а затем обратно на utf8:
use Text::Iconv;
my $converter = Text::Iconv->new("utf8", "CP1255");
$content=$converter->convert($content);
my $converter = Text::Iconv->new("CP1255", "utf8");
$content=$converter->convert($content);