Skip to Content.
Sympa Menu

freetds - Re: [freetds] Set up client charset with DSN-less configuration

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Set up client charset with DSN-less configuration
  • Date: Wed, 6 Jul 2016 12:34:01 +0100

2016-07-05 22:16 GMT+01:00 Johnny Yan <jyan AT tableau.com>:
> Hi,
>
>
> We're writing data analytic application on Linux using FreeTDS(0.95.81)
> with unixODBC(2.3.4) to connect to SQL Server databases. Since we need to
> programmatically decide the hosts and other info provided by our customers,
> we decided to use the DSN-less configuration and pass the attributes
> through the connection string. However it seems that we can't set up the
> client side charset correctly.
>
>
> From the attached simple sample code, you could see that we could connect
> with that connection string(you need to change the server and
> username/password if you want to test it). And we get the following head in
> the freetds.log file,
>
>
> log.c:167:Starting log file for FreeTDS 0.95.81
> on 2016-06-30 18:17:32 with debug flags 0x4fff.
> iconv.c:328:tds_iconv_open(0xff47a0, UTF-8)
> iconv.c:187:local name for ISO-8859-1 is ISO-8859-1
> iconv.c:187:local name for UTF-8 is UTF-8
> iconv.c:187:local name for UCS-2LE is UCS-2LE
> iconv.c:187:local name for UCS-2BE is UCS-2BE
> iconv.c:346:setting up conversions for client charset "UTF-8"
> iconv.c:348:preparing iconv for "UTF-8" <-> "UCS-2LE" conversion
> iconv.c:395:preparing iconv for "ISO-8859-1" <-> "UCS-2LE" conversion
>
>
> It seems that the client charset is set to UTF-8. Am I correct? My
> understanding is that this is from the LANG env variable since we didn't
> specify it anywhere. Right?
>
>
> However when we try to specify the charset in the connection string, that
> is appending ";ClientCharset=UTF-16" to the connection string in the
> sample, we didn't observe the expected behavior. In another words, we still
> see the above bold line which implies that the ClientCharset attr in the
> connection string didn't make any difference. Is that expected? Did we do
> it correctly? Probably not. If so, how can we make it right?
>
>
> Let me know if you need any other info. Thank you very much!
>
>
> Johnny
>

Hi,
ClientCharset setting is for multi-byte, not wide. To use wide use
*W versions of the APIs. Internally utf-8 is used so this is normal.
ODBC does not force libTDS to do conversion to multi-byte so only one
conversion is done (beside metadatas).

Frediano




Archive powered by MHonArc 2.6.24.

Top of Page