Also bei mir hat damals UTF8 garnicht geholfen. Ich habs so gelößt.
foreach my $datensatz_id (sort keys(%{$hash_ref})) {
if (defined($id_kontrolle->{$datensatz_id})){
foreach $zeilen_bezeichnung (keys(%{$hash_ref->{$datensatz_id}})) {
$sql .= "," if $sql;
$sql .= "$zeilen_bezeichnung"." = ?";
$values = Encode::encode ("ISO-8859-1", $hash_ref->{$datensatz_id}->{$zeilen_bezeichnung});
push (@array, "$values");
}
push (@array, $datensatz_id);
$sql = "UPDATE $tabellen_name SET $sql WHERE id = ?";
$dbh->do ($sql, undef, @array);
undef $sql;
undef @array;
}