[freetds] charset problem with Sybase on SunOS server and Ubuntu client

James K. Lowden jklowden at freetds.org
Wed Nov 5 22:19:57 EST 2008


Frederick.Dubberspear at sogetthis.com wrote:
> 
> In freetds.conf we have:
> 
> [$SERVER_NAME]
> host = $IP_ADDRESS
> port = $PORT
> tds version = 5.0
> 
> Upon running the script, we get the errors:
> 
> Cannot find the requested character set in Syscharsets: name = 'UTF-8'.
> No conversions will be done.
> Changed data
> Changed database context to 'master'.

I think this was fixed long ago.  If you have a problem with 0.82, I'll
look into it.  

Sybase has a "server makes right" policy: the client sends the server its
preferred encoding in the login packet, and the server uses that encoding
for all communications with that client for that connection.  

However, the *name* -- the literal string used to denote the encoding --
is determined by Sybase, and it doesn't match, say, what GNU uses for
their iconv library.  We have a table to convert the canonical name to
Sybase's:

$ grep -i utf src/tds/sybase_character_sets.h 
        , {             "UTF-8", "utf8"          }

The error message you're seeing comes from the server.  It means Sybase
doesn't recognize "UTF-8" as the name of any encoding.  The login packet
should send 'utf8'.  

You might be able to get away with setting  client charset = utf8, but
you're probably better off upgrading to 0.82.  

HTH.  

--jkl


More information about the FreeTDS mailing list