🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
6 messages
6 total messages Started by Sierp Mon, 09 Nov 2009 21:24
WWW i pliterki
#51667
Author: Sierp
Date: Mon, 09 Nov 2009 21:24
33 lines
1780 bytes
Witam,

mam... no glupi problem powiem szczerze
Prosty skrypt CGI, ktory przez formularz pobiera dane a potem ja 
jakośtam obrabia.

w uproszczeniu skrypt wyglada tak

use CGI qw(:standard);
print header(-charset=>"iso-8859-2");
print start_html();
if (jezeli_skrypt_uruchomiony_pierwszy_raz) {
  print start_multipart_form(-method=>"POST",
                              -id=>"Form"),
  "costam ".textarea(-name=>costam, -default=>'', -rows=>5, 
-columns=>50),submit(-value=>'submit'),end_multipart_form();
} else {
   $zmienna=param('costam');

   print $zmienna;
}

Oczywiscie warunek "if" jest sensowny, jest to czesc skryptu, ale z 
PLiterkami nie moge sobie poradzic...
Jezeli wpisze jakąś pliterkę w textarea, to na następnej stronie 
wyswietli sie tekst bez polskich liter...
Dlaczego?

Szukalem w FAQ pl.comp.lang.perl (jest rozdzial o polskich znakach, 
probowalem roznych rzeczy, bez skutku), googlalem, ale jakos nie moge 
dojsc co zle robie

Sierp
Re: WWW i pliterki
#51668
Author: Szymon Sokół
Date: Mon, 09 Nov 2009 22:01
20 lines
1903 bytes
On Mon, 09 Nov 2009 22:24:47 +0100, Sierp wrote:

> Jezeli wpisze jakąś pliterkę w textarea, to na następnej stronie 
> wyswietli sie tekst bez polskich liter...
> Dlaczego?

U mnie dokładnie taki kod (z warunkiem maksymalnie prostym, tj. !param())
działa poprawnie, ergo problem leży *poza* kodem, który pokazałeś. Nb. ja
bym jednak zamiast 
use CGI qw(:standard);
dał
use CGI qw(:standard -no_xhtml);
w przeciwnym razie będziesz miał nieco zamieszania w nagłówkach (włącz sobie
podgląd źródła tego, co dostajesz z serwera...)

-- 
Szymon Sokół (SS316-RIPE) -- Network Manager                                 B
Computer Center, AGH - University of Science and Technology, Cracow, Poland  O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982  F
Free speech includes the right not to listen, if not interested -- Heinlein  H
Re: WWW i pliterki
#51669
Author: Sierp
Date: Mon, 09 Nov 2009 23:03
30 lines
1883 bytes
Szymon Sokół pisze:
>> Jezeli wpisze jakąś pliterkę w textarea, to na następnej stronie 
>> wyswietli sie tekst bez polskich liter...
>> Dlaczego?
> 
> U mnie dokładnie taki kod (z warunkiem maksymalnie prostym, tj. !param())
> działa poprawnie, ergo problem leży *poza* kodem, który pokazałeś. 

znalazlem blad, choc sleczalem nad tym chwile...
w międzyczasie ze zmiennych "wywalam" niedozwolone znaki (taka prosta 
walidacja) i takze wycinalem polskie literki... ehh...

Natomiast teraz mam dwa inne problemy ;-)

Po pierwsze - jak wyciac wszystko poza pliterkami, czyli jak uzyc 
takiego "wycinacza" niechcianych znakow

$costam =~ s/[^A-Za-z0-9\ ]*//g;

ktory nie wytnie PLiterek? (wpisanie ąęćł etc nie dziala - przypuszczam, 
ze mam inne kodowanie na konsoli ssh niz iso-8859-2)

Oraz jak w pliku zrodlowym (edytowany przez vi na linuksie) wpisac tekst 
  aby wyswietlil sie poprawnie, czyli aby takie cos zadzialalo

print "tęstuję";

Jak ktos wie, to fajnie jak napisze - ja zaprzęgam google do szukania

Sierp
Re: WWW i pliterki
#51670
Author: Szymon Sokół
Date: Mon, 09 Nov 2009 23:30
20 lines
2120 bytes
On Tue, 10 Nov 2009 00:03:53 +0100, Sierp wrote:

> Po pierwsze - jak wyciac wszystko poza pliterkami, czyli jak uzyc 
> takiego "wycinacza" niechcianych znakow
> 
> $costam =~ s/[^A-Za-z0-9\ ]*//g;
> 
> ktory nie wytnie PLiterek? (wpisanie ąęćł etc nie dziala - przypuszczam, 
> ze mam inne kodowanie na konsoli ssh niz iso-8859-2)

No kochany. NIE WIESZ, jakie masz kodowanie na konsoli? To się może dowiedz.
I jeśli faktycznie inne, to włącz jakieś przekodowanie. Albo zamiast używać
w treści skryptu bezpośrednio znaków, używaj ich kodów (np "ą" = "\xb1"), to
na pewno nie zależy od używanego przez terminal kodowania, za to jest
cholernie niewygodne i nieczytelne.
-- 
Szymon Sokół (SS316-RIPE) -- Network Manager                                 B
Computer Center, AGH - University of Science and Technology, Cracow, Poland  O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982  F
Free speech includes the right not to listen, if not interested -- Heinlein  H
Re: WWW i pliterki
#51671
Author: Paweł Matejski
Date: Tue, 10 Nov 2009 00:40
49 lines
2670 bytes
Sierp wrote:
> Szymon Sokół pisze:
>>> Jezeli wpisze jakąś pliterkę w textarea, to na następnej stronie
>>> wyswietli sie tekst bez polskich liter...
>>> Dlaczego?
>>
>> U mnie dokładnie taki kod (z warunkiem maksymalnie prostym, tj. !param())
>> działa poprawnie, ergo problem leży *poza* kodem, który pokazałeś. 
> 
> znalazlem blad, choc sleczalem nad tym chwile...
> w międzyczasie ze zmiennych "wywalam" niedozwolone znaki (taka prosta
> walidacja) i takze wycinalem polskie literki... ehh...
> 
> Natomiast teraz mam dwa inne problemy ;-)
> 
> Po pierwsze - jak wyciac wszystko poza pliterkami, czyli jak uzyc
> takiego "wycinacza" niechcianych znakow
> 
> $costam =~ s/[^A-Za-z0-9\ ]*//g;
> 
> ktory nie wytnie PLiterek? (wpisanie ąęćł etc nie dziala - przypuszczam,
> ze mam inne kodowanie na konsoli ssh niz iso-8859-2)

use locale;
$costam =~ s/[^[:alpha:]\ ]*//g;
albo
$costam =~ s/[^\w\d\ ]*//g;

> Oraz jak w pliku zrodlowym (edytowany przez vi na linuksie) wpisac tekst
>  aby wyswietlil sie poprawnie, czyli aby takie cos zadzialalo
> 
> print "tęstuję";

Najprościej ustawić kodowanie konsoli na iso-8859-2.

Możesz też spróbować powiedzieć perlow, jakiego kodowania używasz w skrypcie, a jakie ma dawać na STDOUT (zakładam, że
html CGI wyrzuca na stdout):
use encodig 'twoje_kodowanie_na_konsoli', STDOUT=>'iso-8859-2';
Żródło: perldoc encoding

Jeśli chcesz vima do tego zaprząc, to możesz spróbować:
:set fileencoding=iso-8859-2


P.S. Żadnego z tych sposobów w pełni nie stosowałem, ale natknąłem się na te informacje przy okazji rozwiązywania swoich
problemów, może Ci coś zadziała.

-- 
P.M.
Re: WWW i pliterki
#51672
Author: Szymon Sokół
Date: Tue, 10 Nov 2009 16:56
27 lines
2234 bytes
On Tue, 10 Nov 2009 01:40:13 +0100, Paweł Matejski wrote:

> Sierp wrote:
[----]
>> Po pierwsze - jak wyciac wszystko poza pliterkami, czyli jak uzyc
>> takiego "wycinacza" niechcianych znakow
>> 
>> $costam =~ s/[^A-Za-z0-9\ ]*//g;
>> 
>> ktory nie wytnie PLiterek? (wpisanie ąęćł etc nie dziala - przypuszczam,
>> ze mam inne kodowanie na konsoli ssh niz iso-8859-2)
> 
> use locale;
> $costam =~ s/[^[:alpha:]\ ]*//g;
> albo
> $costam =~ s/[^\w\d\ ]*//g;

To nie jest rozwiązanie postawionego problemu. Hint: 
ĽŠŤŽľšşťžŔÁÂĂÄĹÇČÉËĚÍÎĎĐŇÔŐÖŘŮÚŰÜÝŢßŕáâăäĺçčëěíîďđňôőöřůúűüýţ - "wszystko
poza pliterkami"
Oczywiście, można się zastanawiać, czy pytający na pewno miał na myśli to,
co napisał... 
-- 
Szymon Sokół (SS316-RIPE) -- Network Manager                                 B
Computer Center, AGH - University of Science and Technology, Cracow, Poland  O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982  F
Free speech includes the right not to listen, if not interested -- Heinlein  H
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads