[freetds] Using PHP mssql_init/bind for sending Unicode to Stored Procedures

James K. Lowden jklowden at freetds.org
Sat Jun 14 13:43:16 EDT 2008


ZIGLIO, Frediano, VF-IT wrote:
> > It's a little tricky because dbrpcparam() accepts VARCHAR and NVARCHAR
> > parameters. The libtds function that reads the parameter buffer must
> > distinguish between (VAR)CHAR, which should be converted, and 
> > N(VAR)CHAR,
> > which is by definition UCS-2 (and doesn't need to be and can't be
> > converted).  
> > 
> > src/dblib/unittests/rpc.c needs to be enhanced to test this 
> > feature, to
> > make sure we get it right.  Patches welcome!  
> > 
> 
> I think that dblib does not support wide characters... but we can extend
> it

db-lib makes some ASCII-ish assumptions.  dbrpcsend() should respect the
client charset, though.  If the datatype is SYBCHAR, dbrpcsend() should
convert from the client's charset to the server's charset.  That's true
even if the client charset is UTF-8.  

The conversion should happen in libtds, in a routine shared by ODBC and
db-lib, probably tds_submit_rpc().  That's as far as I got.  

--jkl



More information about the FreeTDS mailing list