Hendrik Schumacher wrote: > At the first glance you may be using a non-unicode database connection. In > this case > > $dbh->do ("set names 'utf8'"); > > may help. > > Hendrik
Are you sure that is a "SQL Server 2008" statement? I thought that was a mysql thing. Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com > Am Di, 29.09.2009, 16:39, schrieb Stephan Austermühle: >> Hi all, >> >> maybe I do not to see the wood for the trees... >> >> All I want to do is to process strings with special characters (e.g., >> Umlauts), i.e. INSERT and SELECT them from my database (SQL >> Server 2008). >> >> Querying strings with special characters works fine now: >> >> $ locale |grep ^LC_CTYPE >> LC_CTYPE="en_US.UTF-8" >> >> Perl code: >> >> binmode(STDIN, ':utf8'); >> binmode(STDOUT, ':utf8'); >> binmode(STDERR, ':utf8'); >> ... >> >> $st = $dbh->prepare(q/SELECT id, name FROM foo/); >> $st->execute() || croak("Cannot SELECT"); >> >> while (my $r = $st->fetchrow_hashref()) { >> printf("%3d %s\n", $r->{'id'}, $r->{'name'}); >> } >> $dbh->commit(); >> >> Result: >> >> 1 Gänz vüle Ã*mläute und Ã*eugs >> >> Okay, SELECTing works (unless "use encoding 'utf8'" is given). >> >> Now the other way. Insert a row and fill a column with a string containing >> special characters: >> >> $st = $dbh->prepare(q/INSERT INTO foo (name) VALUES (?)/); >> $st->execute("süÃ*") || croak("Cannot INSERT"); >> $dbh->commit(); >> ... >> >> Result: Column 'name' is empty (but not NULL). Tracing shows >> >> Unicode login6 >> dbname=DSN=XXX;MARS_Connection=Yes, uid='XXX', pwd=XXX >> Now using dbname = DSN=XXX;MARS_Connection=Yes;UID=XXX;PWD=XXX; >> SQLDriverConnect 'DSN=XXX;MARS_Connection=Yes;UID=XXX;PWD=XXX;', >> ''XXX'', 'XXX' >> Out connection string: DSN=XXX;MARS_Connection=Yes;UID=XXX;PWD=XXX; >> Turning autocommit on >> DRIVER_ODBC_VER = 03.00 >> DRIVER_NAME = libtdsodbc.so >> DRIVER_VERSION = 0.82.1.dev.20090904 >> MAX_COLUMN_NAME_LEN = 128 >> DBD::ODBC is unicode built : YES >> Deferring Binding >> SQL_DBMS_NAME = Microsoft SQL Server >> SQLMoreResults supported: 1 >> SQLDescribeParam supported: 0 >> SQLDescribeParam supported: 0 >> unicode support = 1 >> Processing non-utf8 sql in unicode mode >> Processing non-utf8 sql in unicode mode >> >> Can you give me a hint how to handle special characters with Perl and >> DBD::ODBC? >> >> Setup: >> >> - Perl 5.8.9 >> - FreeTDS v0.82.1.dev.20090904 (Unicode build) >> - unixODBC 2.2.14 >> - DBD::ODBC 1.23 (Unicode build) >> >> Thanks and regards, >> >> Stephan >> >> > > >