LINUX.ORG.RU

Проблема дня загнала меня в тупик!


0

0

Народ, помогите пожалуйста, кто знает: На Perl пишу скрипт типа Guest booka (Perl генерирует HTML файл) , вобщем ввод информации в textarea и сохранение её в файле *.txt Почему, когда я ввожу текст кирилицей, символы сохраняются по типу: %26%231072%3B (символ "а"), + (пробел), %21 (символ "!"). Как сделать чтобы текст сохранялся нормально? Спасибо.


Опубликуй часть исходника с выводом - посмотреть, как ты этот текст выводишь. По вопросу понять трудно, что там - проблема какая-то странная.

josephson ★★
()

#!/usr/bin/perl

print "Content-type:text/html\n\n";

$input = $ENV{QUERY_STRING};

if($input) { print '<html><body bgcolor= "ccccff"><br>'; print '<H5><b>Thank you! Visit us later!</b></H5><br>'; @array = split(/\=/, $input); $name=$array[1]; $email=$array[2]; $text=$array[3]; print '<br><a href="guest.pl"><H5>Go back</H5></a>'; open(OUT, ">>/var/www/html/net/guest.txt"); print OUT "[N]", $name,"[E]", $email,"[C]", $text, "\n"; print OUT "[end]\n"; close OUT; print '</body></html>'; } else { print '<html><body bgcolor= "ccccff"><br>'; print '<form action="guest.pl">'; print '<H5><b>Welcome to our <i>GUEST BOOK!</i></b></H5>'; print '<HR SIZE=2 WIDTH=175 ALIGN=Left>'; print '<H5>Name:</H5>'; print '<input type="text" name="Name">'; print '<HR SIZE=2 WIDTH=147 ALIGN=Left>'; print '<H5>E-mail:</H5>'; print '<input type="text" name="email">'; print '<HR SIZE=2 WIDTH=147 ALIGN=Left>'; print '<H5>Comments:</H5>'; print '<textarea name = "comments" ROWS=14 COLS=55></textarea>'; print '<HR SIZE=2 WIDTH=407 ALIGN=Left>'; print '<input type="submit" value="Post">'; print '</form>'; print '</body></html>'; }

atomium
() автор топика

Если других вариантов нет, может стоит написать прогу на Си , которая будет выполнять подстановку кирилических символов вместо %26%231072%3B ? Или может кто знает как написать такую прогу на Perl. Меня интересует: куда забрать текст из файла, каким методом обработать?

atomium
() автор топика

Не поленился скопировать и поиграться с твоим скриптом - всё выводится корректно. Какая у тебя версия perl? Может, стоит обновить до 5.6.0?

josephson ★★
()

>Меня интересует: куда забрать текст из файла, каким методом обработать?
Текст из файла можно забрать так:

$input=<>;

Это если отказаться от

$input = $ENV{QUERY_STRING};

Здесь имя файла с текстом подставляется в командную строку. Кстати, я так и проверял (не знаю, что у тебя в окружении). Обработка текста - нормальная. По идее, всё должно работать.

josephson ★★
()

ЧАЙНИКИ!!! Шутка :-)

Твой текст идет в URL-encoded виде. Рекомендации???

Использовать CGI.pm

no-dashi ★★★★★
()

Прошу прощения за безграмотность, но как его использовать? Это модуль? Сразу говорю спасибо всем! Сейчас буду копать!

atomium
() автор топика

imho, and just imho, a ne proshe li vsyakie guestbooki na php pisat'? =)

anonymous
()

купите и почитайте Larry Wall "Programming Perl"...

Zulu ★★☆☆
()

Я кажется уъяснил: вся проблема в локали - это РедХат 8.0 а они перешли на UTF8, поэтому все символы кодируются. В любом случае с CGI.pm всё работает!

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