@specblog

Как научить Perl-скрипт работать в UTF8?

f75c39c22279498382430a0880f0986d.png
это результат некорректной работы с кодировкой моего скрипта.

index.html:
<!DOCTYPE html>
<html lang="ru">

<head>
	<meta charset="utf-8" />
	<title>Поиск по группе РОСА ВКонтакте</title>
	<meta name="generator" content="Geany 1.28 on GNU/Linux" />
</head>

<body>
	<center>
		<form method="GET" action="/cgi-bin/rosa-search.pl" formenctype="application/x-www-form-urlencoded">
		<h1>Введите поисковый запрос<br />для поиска по группе<br /><a href="https://vk.com/rosalab" target="_blank">«РОСА Линукс» ВКонтакте</a>.</h1>
		<input type="text" name="search_request">
		<input type="hidden" name="search_parametrs" value=" site:vk.com">	
		<!-- пробелы в value стоят специально -->
		<input type="hidden" name="vk_group_name" value=" роса линукс">
		<br /><input type="submit" value="Искать!">
		</form>
	</center>
</body>

</html>


rosa-search.pl:
#!/usr/bin/perl -w
# за основу взято https://www.sitepoint.com/uploading-files-cgi-perl-2/
use strict;
use utf8;
use CGI qw/ :standard -debug /;
# подключаем модуль дл вывода подробных ошибок
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;
use Text::Iconv;
my $query = new CGI;
# считываем параметры, переданные нам с HTML формы
my $search_request = $query->param("search_request");
my $search_parametrs = $query->param("search_parametrs");
my $vk_group_name = $query->param("vk_group_name");
my $google = "https://www.google.ru/#newwindow=1&q=";
my $string0 = $google.$search_request . $search_parametrs . $vk_group_name;
# print $string0;

print $query->header ( );
# binmode(STDOUT, ":utf8"); 
print <<END_HTML;
<!DOCTYPE html>
<html> 
<head>
<meta charset="utf-8" />
<meta http-equiv="refresh" content="0;URL='$string0'" />
<head>
</html>
END_HTML


Как исправить так. чтобы кириллица обрабатывалась в корректной кодировке?

При запуске через консоль
$ perl rosa-search.pl
отрабатывает полностью корректно и без кракозябр.

Спасибо.
  • Вопрос задан
  • 426 просмотров
Пригласить эксперта
Ответы на вопрос 2
parserpro
@parserpro
CGI в 21-ом веке - это что-то.
Возьмите Dancer или Mojolicious, не занимайтесь некрофилией.
Ответ написан
Комментировать
начните с изучения основ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы