Thread [MySQL, Tk] Und nochmal: utf-8-kodierte Daten in Datenbank -> Tk::Text -> Datenbank
(13 answers)
Opened by pktm at 2012-02-23 15:41 2012-02-23T18:08:19 pq Es kommt in die Hashref der Attribute, neben RaiseError, PrintError, AutoCommit... Code (perl): (dl
)
1 2 3 4 5 { RaiseError => 1, mysql_enable_utf8 => 1, # ab DBD Version ?? musst gucken, sorry ;) PrintError => 0, } und ermöglicht die vollständig zeichenorientierte Kommunikation über den DBI-Layer. Die Tabelle in MySQL muss da auch das Flag haben, Code: (dl
)
create ..()default charset utf8 dann geht auch sowas Select UPPER(name) mit UTF-8-kodierten Zeichen. Weitere Tests sind die Ausgabe der Länge mit Stringfunktionen in MySQL. Dein Dump (pktm) zeigt, so wie ich sehen kann, die Oktetten, die jedoch zusammen utf-8-kodierte Umlaute (äöü) ergeben. Wenn mysql_enable_utf8 nicht gesetzt ist, kriegst Du über DBI die Oktetten geliefert. Für eine Ausgabe auf STDOUT sind Oktetten ok. Mit Encode.pm kannst Du Oktetten zu UTF-8-kodierten Strings machen. Sorry, ich hab mir das nicht ausgedacht, das ist in der Tat etwas verwirrend, was hilft: So wie Perl-intern zwischen Oktetten und Zeichenketten unterscheidet, so muss der Programmierer auch seinen Code sehen, also immer wissen, sind das jetzt Oktetten oder UTF-8-kodierte Zeichenketten. Viel Erfolg! Rosti |