Portál AbcLinuxu, 1. května 2025 03:19
Cetli jste na webu mod_perlu reklamni kydy, ze vam budou slapat skripty stejne jako kdyz je poustite pres cgi handler? Tak to jste zbytecne ztraceli cas.
Situace: apache 1.3 s mod_perl a DBI plus DBD::Oracle. Jednoduchy testovaci skriptik, ktery selekti polozku s nemeckymi znaky. NLS_LANG nastaveny na AMERICAN_AMERICA.AL32UTF8. Hezky na zacatku skriptu use utf8;
Vysledek: perl test.pl vrati spravny retezec. test.pl prohnany v apachi pres cgi handler vrati spravny retezec. test.pl prohnany pres mod_perl vrati paznaky.
Reseni: pokud chcete pouzivat mod_perl, musite pred vypsanim retezce z databaze predaneho DBI prohnat utf8::decode
Vedlejsi ucinky: skript vam prestane fungovat z konzole a v cgi handleru.
Zaver: Nemam rad Perl
Tiskni
Sdílej:
mod_perl
, ne? Hlásil jsi to vývojářům?
use utf8;
. Ta ale nema v perlu 5.8 zadny vliv na vstupne/vystupni operace! Mela by smysl pouze, kdyby vas Perlovy zdrojak obsahoval ne-ASCII znaky v UTF-8. Spis se podivejte, jestli by nepomohlo binmode STDOUT,':utf8';
(pripadne takove kodovani, ktere ocekava apache). Prectete si tez perldoc open.
Perl, to ani není programovací jazyk. To jenom Bůh nesl plnou náruč operátorů a zakopl...
cgi
a k mod_perl
? Ono u webové aplikace je na cestě mezi zdrojovým kódem a zobrazením v prohlížeči tolik míst, kde se může kódování zmršit…
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.