Hi,
I'm currenly working on unicode support for the DBD::MaxDB driver. Now I have 
the problem to find out the encoding of a statement passed thru 
dbd_st_prepare(...) method. Because the statement is passed as char* value I 
cannot check if the UTF-8 flag was set for the SV value or not. But depending 
on this flag the char buffer must be interpreted as 8-bit Ascii or as UTF-8 
(includes 7-bit Ascii only). 

#example
#depending on the UTF-8 flag the byte representation for "ü" differs  
my $username1 = "düd"; #is a 8 bit Ascii value - hex 64FC64
my $username" = eval q{"\x{8f6f}ü" }; utf-8 value - hex E8BDAFC3BC

I think, the solution would be to add a new prepare method dbd_st_prepare_sv to 
DBI that passes the SV value of the statement thru the DBD driver instead of a 
char* value. I found a similar discussion on perl.dbi.users, but without a 
clear answer if the DBI change would come or not.  
http://www.issociate.de/board/post/243028/DBD::Oracle_-_prepare()_and_the_utf-8_flag..html

I have the same problem with dbd_maxdb_db_login6 where username and password 
are passed as char* values instead of a SV value. 

Kind regards,
Marco Paskamp
MaxDB, SAP Labs Berlin 

Reply via email to