Re: Using PHP mssql_init/bind for sending Unicode to Stored Procedures
"ZIGLIO, Frediano, VF-IT" <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
> > 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