Hi,

Increasingly I am getting asked unicode questions and being presented with unicode issues that currently don't work in DBD::ODBC. Currenty DBD::ODBC supports the binding of unicode parameters and the returning of unicode result-set data.

I would like to change DBD::ODBC to support:

a) unicode column names (from NAME attribute, column_info etc)
b) unicode connection strings
c) unicode SQL
d) unicode table names (table_info etc)

Although I don't specifically need unicode connection strings I at least need to turn connection strings usually passed to SQLDriverConnect into ODBC wide characters and call SQLDriverConnectW because without this call other calls to SQLXXXW (wide functions) are mapped to ANSI functions by the ODBC driver manager. Since I need to do this it seemed reasonable to just go the whole way and support unicode connection strings.

(a) I have implemented and appears to be ok and (d) should be fairly easy too but (b) and (c) are a little trickier with the existing DBI interface (unless I'm mistaken).

dbd_st_prepare and dbd_db_login6 both take char* and not the original SV so how can I tell if the strings are utf8 encoded or not?

What I'd like to be able to do (in ODBC terms is):

In dbd_db_login6
  test if connection string has utf8 set on it
  if (utf8on)
    convert utf8 to utf16 (that is what ODBC wide functions use)
    call SQLDriverConnectW
  else
    call SQLDriverConnect (this is the ANSI version)

Similarly in prepare where a number of people have unicode column or table names and hence want to do "select unicode_column_name from table".

Is this what dbd_st_prepare_sv (as opposed to dbd_st_prepare) is for? and should there be a dbd_db_login6_sv?

Any help would be appreciated.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to