[Perl] Cчитывать данные из формы cgi какозябры

Тема в разделе "Другие языки", создана пользователем KHyT, 1 сен 2011.

Модераторы: Цукер
  1. KHyT

    KHyT

    Регистр.:
    26 апр 2008
    Сообщения:
    328
    Симпатии:
    27
    вот форма
    Код:
    <html><head>
    <TITLE><H4>Моя Первая Форма</H4></TITLE>
    <head>
    <body>
    <FORM NAME = "form_example" ACTION = "/cgi-bin/form1.cgi" METHOD = "POST">
    Имя:     <INPUT TYPE = "TEXT" NAME = "fname"><BR>
    Фамилия: <INPUT TYPE = "TEXT" NAME = "lname"><BR>
    <BR>
    Ваш любимый цвет: <BR>
    <INPUT TYPE = "RADIO" NAME="color" VALUE = "red">Красный<BR>
    <INPUT TYPE = "RADIO" NAME="color" VALUE = "bue">Синий<BR>
    <INPUT TYPE = "RADIO" NAME="color" VALUE = "green">Зеленый<BR>
    <BR>
    <INPUT TYPE = "CHECKBOX" NAME="sports" VALUE="football">Футбол<BR>
    <INPUT TYPE = "CHECKBOX" NAME="sports" VALUE="baseball">Бейсбол<BR>
    <INPUT TYPE = "CHECKBOX" NAME="sports" VALUE="basketbol">Баскетболл<BR>
    <BR>
    <INPUT TYPE = "SUBMIT" NAME="doit" VALUE=" Отправить информацию ">
    </FORM>
    </BODY>
    </HTML>
    </body></html>
    
    
    с помощью этого кода пытаюсь считать данные формы

    Код:
    #!/usr/bin/perl
    use strict;
    use CGI qw(:standard);
    use CGI::Carp qw(fatalsToBrowser);
    
    
    my $first_name = param('fname');
    my $last_name = param('lname');
    
    my $fav_color = param('color');
    
    my @fav_sports = param('sports');
    my $sport_count = @fav_sports;
    my $sport_text;
    print header;
    print start_html ('Моя Первая Форма');
    print qq( Здравствуйте, $first_name $last_name<P>);
    print qq(Ваш любимый цвет: $fav_color);
    if ($sport_count > 1) {
        $sport_text = "Ваши любимые виды спорта";
    }
    else {
        $sport_text = "Ваш любимый вид спорта";
    }
    foreach(@fav_sports) {
        print qq(-$_<BR>);
    }
    print end_html();
    
    
    
    
    то вывод

    Content-Type: text/html; charset=ISO-8859-1 .............................. как убрать эту строку
    и почему все остальное какозябры я сохранял и в utf8 и сp1251 все ровно какозябры
     
  2. jami

    jami Постоялец

    Регистр.:
    10 авг 2011
    Сообщения:
    114
    Симпатии:
    39
    По дефолту кодировка ответа сервера ISO-8859-1, чтобы изменить:
    PHP:
    print header("-charset" => "utf-8"); 
    Также читай кэмелбук (Advanced perl programming) и
    PHP:
    perldoc Encode
    по использованию UTF8 в перле, есть свои нюансы.
     
    KHyT нравится это.