[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