[freetds] Using PHP mssql_init/bind for sending Unicode to Stored Procedures
ZIGLIO, Frediano, VF-IT
Frediano.Ziglio at vodafone.com
Thu Jun 12 03:59:38 EDT 2008
>
> Jason Young (Morgon) wrote:
> > perhaps it's simply a lack of NVARCHAR in the php_mssql
> > library, but I cannot send UTF8 data to SQL Server using
> > mssql_init/bind/execute - yet it's not a general fault in
> my setup, as I
> >
> > can "EXEC blah N'<UTF Text>'" just fine.
>
> In the case of "EXEC blah N'<UTF Text>'", the data are
> embedded in the SQL
> text, which is converted to UCS-2 in libtds just before it's
> put on the
> wire. I'm not sure what, if anything, "N'foo'" does for you; I would
> think "'foo'" would work just as well.
>
> In the case of dbrpcparam(), you're stuffing the data into a
> buffer and
> telling the library the datatype. I'm not sure what happens
> -- I haven't
> looked yet -- but *if* any conversion is done, it would be in libtds
> during dbrpcsend().
>
> 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
freddy77
More information about the FreeTDS
mailing list