Skip to Content.
Sympa Menu

freetds - [freetds] Character conversion error with special characters (umlauts)

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Stefan Axelsson" <Stefan.Axelsson AT ltkalmar.se>
  • To: <freetds AT lists.ibiblio.org>
  • Subject: [freetds] Character conversion error with special characters (umlauts)
  • Date: Fri, 18 Jul 2008 11:30:05 +0200

Hello everyone,

After about a day of googling I've given up on tha path, so I'll bother you
people instead.

Basically I've got an Ubuntu server with Apache, mod_perl and the usual
stuff. I've written a simple webapp that communicates with an MSSQL 8 on a
Win2K3 box. This is being done through the (I guess typical) method of Perl
package (DBI) talking to unixODBC/FreeTDS that talks to the server.

Normal operation works great, no problems at all. But as soon as I showed my
small app to my boss he broke it. I had totally forgotten to use non-english
words when testing it (I'm a swede, but I code "in english" and thus I add
test data in english too, old habit). So, adding words with åäö in an INSERT
statement broke the application.

Checking logs gave me an error: [unixODBC][FreeTDS][SQL Server]Error
converting client characters into server's character set. Some character(s)
could not be converted.

Google helped me narrow it down, but I found no way to solve it. I've checked
that iconv can translate it, it does so perfectly. I've tried some "common"
special characters (like the ' ) and it works just fine. I've made sure I use
nvarchar in the database (missed that at first, but changing it didn't help).
My best guess atm is that the characters I want to use will "grow" during
conversion (i.e. each byte becomes two bytes) between UTF-2 and UCS-2LE.

I've put the logfile for you to have a look at if that helps:
http://pastebin.com/m3a90fc7b

Many thanks in advance,
Stefan Axelsson





Archive powered by MHonArc 2.6.24.

Top of Page