LINUX.ORG.RU

perl, обновление ubuntu

 


0

1

Ubuntu 14.04: perl 5.18, template-toolkit 2.24, apache 2.4.7.
Ubuntu 18.04: perl 5.26, template-toolkit 2.27, apache 2.4.29.

После обновления Ubuntu (14.04 > 16.04 > 18.04) неправильно работает web-приложение:
браузер получает ответ от сервера 'Content-Type text/html; charset=utf-8',
но символы при этом перекодированы в мусор.

Добавил при выводе шаблона ENCODING => 'utf8'

my $tt = Template->new(
	{
		COMPILE_DIR  => '/tmp/ttc',
		INCLUDE_PATH => [ '/var/www/lib' ],
                ENCODING => 'utf8',
		INTERPOLATE  => 1,
		PRE_CHOMP    => 1,
		POST_CHOMP   => 1
	}
) || die "$Template::ERROR\n";


В таком варианте вывод на экран исправился, но в базу вместо русских букв пишутся значки юникода.
Устарело что-то ...

Ответ на: комментарий от KennyMinigun

Всегда было так:

my $req = Apache2::Request->new($r);
$r->content_type('text/html; charset=utf-8');
my $tt = Template->new(
	{
		COMPILE_DIR  => '/tmp/ttc',
		INCLUDE_PATH => [ '/var/www/lib' ],
		INTERPOLATE  => 1,
		PRE_CHOMP    => 1,
		POST_CHOMP   => 1
	}
) || die "$Template::ERROR\n";

...
my $vars = { ... };
$tt->process( 'itog.t', $vars ) || die $tt->error(), "\n";

Сделал только обновление системы, исходники не менялись.

Через AJAX делаю запрос и потом заменяю текст на сайте. В отладчике Firefox все можно посмотреть.

WinLin2 ()
Последнее исправление: WinLin2 (всего исправлений: 3)
Ответ на: комментарий от ilux

Все шаблоны (*.tt) хранятся в utf-8.
Исходники на Perl и JS, отвечающие за формирование ответов одинаковые.

Если не добавлять в Template->new( ENCODING => 'utf8',
то некоторые шаблоны выводятся в читаемом виде,
а в остальных вместо русских букв мешанина.

WinLin2 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.