Re: DBD::ODBC and character sets
- From: hs@xxxxxxxxxxxxxx (Hendrik Schumacher)
- Date: Tue, 29 Sep 2009 17:26:55 +0200 (CEST)
Correct. I shouldn't answer before reading everything. :/
Am Di, 29.09.2009, 17:03, schrieb Martin Evans:
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
.
- References:
- Re: DBD::ODBC and character sets
- From: Hendrik Schumacher
- Re: DBD::ODBC and character sets
- From: Martin Evans
- Re: DBD::ODBC and character sets
- Prev by Date: Re: DBD::ODBC and character sets
- Next by Date: Re: DBD::ODBC and character sets
- Previous by thread: Re: DBD::ODBC and character sets
- Next by thread: Re: DBD::ODBC and character sets
- Index(es):
Relevant Pages
|