Zmateny perl z kodovani
Honza Pazdziora
adelton na fi.muni.cz
Středa Leden 19 11:04:04 MET 2005
On Wed, Jan 19, 2005 at 10:51:57AM +0100, Ondrej Koala Vacha wrote:
>
> A ted: nactu z pomoci DBI z databaze nejake udaje v iso-8859-2, bez
> problemu jdou vytisknout. Potiz nastane, jak nad nimi provedu nejakou
:-) No, bez problemu, pokud nemate use warnings, protoze to IMO budou
byty a Vy byste z nich potreboval udelat znaky (aby Vam z nich PerlIO
encoding mohl zpatky udelat byty).
> Chapu, ze je to predevsim problem DBI a jeho zrejme zvlastniho zpusobu
> cinnosti, ale neexistuje nejaka funkce, ktera toto elegantne resi? Zatim
> to delam pomerne slozite, tedy:
>
> $a = Encode::decode('iso-8859-2',$a); # prevadim do perl internal format
> $a = s/ +/ /og;
> $a = Encode::encode('iso-8859-2',$a); # prevadim zpet do iso-8859-2, i
Ne, nemelo by byt potreba delat zpet ten encode. Vy chcete z bytu od
DBI dostat znaky (tedy UTF-8, ale nas nezajima, ze to je UTF-8) a pak
uz pracovat pouhopouze se znaky, a nechat na encodingu navesenem na
filehandlech, aby ty znaky pak prislusne prevedly.
DBD pro nektere databaze (Oracle, PostgreSQL) umi v pripade, ze
kodovani klienta databazoveho spojeni je UTF-8, vratit retezcova data
jiz decodovana do znaku, takze tam to pak funguje transparentne. Pokud
Vam databaze vraci ISO-8859-2 (a nejde ji presvedcit, aby vracela
UTF-8 (bez ohledu na to, ze data jsou ulozena v cemkoli)), je ten
rucni decode asi jedina cesta.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Perl