Thread Umlaute Spreadsheet::WriteExcel
(8 answers)
Opened by maart at 2016-02-03 23:14
Hi,
habe es mal selbst ausprobiert und kann das Problem nicht nachvollziehen. Wieweit das auf Deine Situation anwendbar ist, weiß ich nicht. Dafür liegen zu wenig Informationen vor. Ein Testskript schreibt mit aktiviertem utf8 Daten mit Umlauten in die DB. Dann liest es die Daten wieder aus der DB und gibt sie in eine Excel-Datei aus. System: Linux Perl: 5.10.1 DBD::SQLite: 1.31 DBI: 1.616 Spreadsheet:WriteExcel: 2.40 Wenn ich mir diese Excel-Datei anschließend anschaue, dann stimmen die Umlaute und alles wird korrekt angezeigt. Testskript: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #! /opt/local/perl/bin/perl # vim: fenc=utf-8 enc=utf-8: use strict; use warnings; use utf8; use DBI; use Spreadsheet::WriteExcel; my $dbfile = 'utf8.db'; my $xlsfile = 'utf8.xls'; my $dbh = DBI->connect( "dbi:SQLite:dbname=$dbfile", "", # no user "", # no pass ) or die $DBI::errstr; $dbh->{sqlite_unicode} = 1; $dbh->do(" CREATE TABLE IF NOT EXISTS obst ( name TEXT, desc TEXT ); ") or die $dbh->errstr; my $sth = $dbh->prepare( qq~INSERT INTO obst VALUES( "Äpfel", "lecker" );~ ) or die $dbh->errstr; $sth->execute() or die $sth->errstr; my $xls = Spreadsheet::WriteExcel->new($xlsfile); $sth = $dbh->prepare( qq~SELECT * FROM obst;~ ) or die $dbh->errstr; $sth->execute() or die $sth->errstr; my $wb = $xls->add_worksheet( 'obst' ); $wb->write_col( 0, 0, $sth->fetchall_arrayref() ); Kodierung der Datei: Kodierung der Daten in der DB ist erkennbar am HexDump: Code: (dl
)
1 $ sqlite3 utf8.db 'SELECT * FROM obst' | xxd siehe: http://www.fileformat.info/info/unicode/char/c4/in... Den Excel-Blob spar ich mir hier. meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |