Thread für in der MySQL-Datenbank ...
(11 answers)
Opened by rtp_de at 2013-11-26 15:48
Bedenke das "UTF-8" und "perl-utf8" nicht das selbe sind. Perl behandelt binäre Scalare anders als "dekodierte". Ein dekodierter Scalar bekommt von Perl ein "utf8-Flag". Darum fragte ich, ob du mal mit
![]() Du ließt Binäre Daten aus LWP::UserAgent my $ticker=$response->content();, die du dann an XML::RSS übergibst, das daraus einen Hash-Baum macht, dessen Elemente wahrscheinlich auch Binäre UTF-8 Scalare sind. (prüfe das mal mit $ok=utf8::is_utf8($str) oder halt mit ![]() Ähnlich mag es gelaufen sein als du $dbh->{'mysql_enable_utf8'} benutzt hast. Da hat DBI das vermeintliche latin1 in UTF-8 gewandelt. Das von dir erwähnte $str=Encode::encode("ISO-8859-1",$str) funktioniert auch nicht wie erwartet, da die Daten schon binär sind (kein utf8-flag) wird nichts gewandelt. Wenn du vorher ein $str=Encode::decode("UTF-8",$str) gemacht hättest, wäre wahrscheinlich das erwartete heraus gekommen. Das ist erst mal eine Vermutung, die sich aber mit deinen Informationen deckt. Mein Vorschlag ist erst mal zu schauen ob das utf8-flag durchgängig gesetzt ist. Wenn nicht, encodiere die Scalare, die du an die DB sendest. Und wenn das nicht hilft setze 'mysql_enable_utf8'. Wenn das alles nicht funktioniert müssen wir weiter schauen. |