[freetds] Status of UTF-8 support in 0.83 dev

Sebastien FLAESCH sf at 4js.com
Thu Aug 14 10:24:47 EDT 2008


About ParameterType in SQLBindParameter:

 From my understanding, if on Windows you write a "UNICODE" UCS-2 ODBC
application using wchar_t/WCHAR, you have to bind using:

     SQL_C_WCHAR + SQL_W[VAR]CHAR

But what about UTF-8 ODBC applications in FreeTDS?

Does FreeTDS ODBC consider that UTF-8 is an equivalent for the Microsoft
"UNICODE" and therefore must be bound with SQL_C_CHAR + SQL_W[VAR]CHAR?

IBM DB2 CLI says UTF-8 data can be bound with SQL_[VAR]CHAR:

    http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.odbc/db2z_utf8pm.htm

Microsoft says SQL_W[VAR]CHAR has to be used for "Unicode character string" (I guess they talk about UCS-2):

    http://msdn.microsoft.com/en-us/library/ms710150(VS.85).aspx

What's the right way?

Seb

Sebastien FLAESCH wrote:
> James,
> 
> When I print the client and the server charset in tds_convert_string()
> called from tds_put_data(), I see:
> 
>   char_conv->client_charset.name = "UTF-8"
>   char_conv->server_charset.name = "CP1252"
> 
> I expected UCS-2 for the server charset...????
> 
> Hence it's normal that the conversion of non-CP1252 compatible chars
> like 鴻 result in error...
> 
> I appears that curcol->char_conv points to the client2server_chardata
> TDSICONV structure, because in tds_set_param_type(), the data type is
> not identified as a UNICODE type...
> 
> So when binding the buffers with sqltype SQL_[VAR]CHAR, it appears that
> the Sybase type used is not "UNICODE"...
> 
> Should I then bind with SQL_WCHAR / SQL_WVARCHAR?
> 
> I made a little test (attached, with log)... still failing.
> 
> Seb
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> FreeTDS mailing list
> FreeTDS at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds




More information about the FreeTDS mailing list