[freetds] Character conversion error withspecialcharacters(umlauts)

ZIGLIO, Frediano, VF-IT Frediano.Ziglio at vodafone.com
Fri Jul 18 09:09:07 EDT 2008


> >> 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
> >>  
> >
> >I think it would be useful to see which characters are inserted. 
> >Also did you try ClientCharset option (I don't know your 
> configuration) ??
> >
> >freddy77
> 
> 
> None are inserted if I use the more national characters. (In 
> extended ASCII that would be (in dec) 132, 134,, 142, 143, 
> 148, 153 (åäöÅÄÖ) <-- If they get through correctly formated. 
> aaoAAO with dots and rings...
> 

Yes, using Latin1 or "similar" encoding.

> If I've missunderstoof you now, do tell me. I'm still quite 
> fresh when it comes to this (old MySQL user realy), and thus 
> I might just missunderstand a few things here and there. ;)
> 
> I've set the Client Charset option (both in freetds.conf and 
> in odbc.ini to be sure) to UTF-8. Also tried a few others 
> just to make sure, doesn't help any.
> 

Remember that in utf8 above characters are not encoded using single characters

> Basically this is my configs: (defaults are kept, so I'll 
> just post the system specifics)
> 
> ----- /etc/freetds/freetds.conf -----
> 
> [CMDB]
> 	host = anonymized.host.name.com
> 	port = 1433
> 	tds version = 8.0
> 	client charset = UTF-8
> 
> -------------------------------------
> 
> 
> ----- /etc/odbc.ini -----------------
> 
> [ODBC Data Sources]
> CMDB = Microsoft SQL Server 2003
> 
> [CMDB]
> Driver	= /usr/lib/libtdsodbc.so
> Description	= CMDB Data
> Trace		= Yes
> TraceFile	= /tmp/cmdb_tds.log
> Server	= anonymized.host.name.com
> Database	= cmdb
> TDS_Version	= 8.0
> 
> -------------------------------------
> 

This is odbc-only so freetds.conf should not be used. Default charset is iso8859-1 so encoding like you suggested should work.

freddy77
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3129 bytes
Desc: not available
Url : http://lists.ibiblio.org/pipermail/freetds/attachments/20080718/5cb79aab/attachment.bin 


More information about the FreeTDS mailing list