UTF8, DBD::mysql a binarni data
Honza Pazdziora
adelton na fi.muni.cz
Pondělí Duben 18 09:24:00 MEST 2005
On Sat, Apr 16, 2005 at 08:52:38PM +0200, Jan Kasprzak wrote:
> Honza Pazdziora wrote:
> : Tohle je divne. Znamena to, ze DBD::mysql vrati ten retezec
> : s nastavenym UTF-8 flagem, i kdyz to neni UTF-8 retezec?
>
> Ano, tak nejak se mi to jevi. Ovsem nevim na zaklade ceho
> tak DBD::mysql soudi (locale na to nema vliv, zkousel jsem).
Tipl bych si, ze na zaklade nejake chyby. ;-)
> : Nejdriv si
> : musime ujasnit, co vlastne za data mame. Co na tom rika
> :
> : printf map { "%x ", ord $_ } split //, $ref->[0]
> :
> : nebo ekvivalent?
>
> To jsem taky zkousel, vysledek je
>
> Malformed UTF-8 character (unexpected non-continuation byte 0x6f, immediately after start byte 0xe8) in ord at ./mysqlsync.pl line 43.
Jup. Takze to fakt vypada, ze mame ne-UTF-8 retezec s UTF-8 flagem. To
je spatny.
> : Pokud ten flag chces vypnout (aby to byl echt binarni retezec), tak
> : utf8::downgrade.
>
> To mi spadne s
>
> Wide character in subroutine entry at ./mysqlsync.pl line 43.
>
> kde radek 43 obsahuje prave to utf8::downgrade($ref->[0]).
>
> : Jeste takovy napad -- deje se to, i kdyz bys ta data vytahl pomoci
> : fetchrow_array?
>
> Zajimavy napad. Fetchrow_array zda se funguje spravne.
> Mas i nejake vysvetleni?
Magie. ;-)
Hmmm. Nejakou dobu zpatky slo v dbi-dev, ze v DBD::mysql (ale mozna
v DBI) je nejaka chyba, ze se ten UTF-8 flag nenuluje. Tzn. ze pri
fetchrow_arrayref se znovu pouzije SV, nastavi se mu nova hodnota, ale
flag zustane (nebo neco v tom smyslu).
Zkus nove DBI / DBD::mysql.
--
------------------------------------------------------------------------
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