Die Umlaute bringen mich um den Verstand (mal geht / mal geht nicht)

Simplify

Grünschnabel
Hallo zusammen,

ich suche nun 2 Tage schon nach einer Lösung und ich könnte ausfliepen.

Situation:
n Tabellen mit n Feldern in gleicher Kollation

Erster Teil:
Daten werden (auschließlich) per Eingabe über ein Formular in eine Tabelle geschrieben.
Umlaute kein Problem, select, insert, update funktionieren ohne Fehler. Die Umlaute werden IMMER korrekt angezeigt.

Zweiter Teil:
Nun muss ich aber Daten aus einer .csv importieren (Preislisten) und hier passiert folgendes.
Preisliste 1: Import der Umlaute klappen einwandfrei
Preisliste 2: Das selbe
Preisliste 3: Klappt nicht, da die Datei offensichtlich nicht okay ist (Was aber erstmal nicht das Problem ist)

Nun wollte ich die bereits importierten Daten, unter anderem die der 1ten Preisliste über ein Formular (gleicher Aufbau und gleiche Umgebung wie im ersten Teil) korregieren und da liegt das Problem.

Ändere ich als Beispiel Daten ("Gehäuse") aus der 1. Preisliste, die korrekt geladen und auch angezeigt werden zum test in ("Gehause") kein Problem, schreibe ich aber wieder ein Umlaut rein ("Gehäuse") erscheint auf einmal ("Gehäuse")

Ich verstehe das nicht mehr.

Trage ich Daten über PHPmyAdmin ein, kein Problem.
Daten ändern oder neu eintragen mit Umlauten klapp.

Daten über die Seite eintragen oder ändern klappt nicht.

Wo ist der Denkfehler?

Vielen Dank für euer Interesse.
 
Problem scheint zu sein das deine DB in UTF8 eingestellt ist und die CSV mit dem windows-1250/latin-1 Zeichensatz codiert ist.

iconv() sollte dir da weiterhelfen.
 
Wäre der Zeichensatz in der .csv Datei bereits "Falsch" müsste doch der Import schon nicht korrekt laufen, oder?
Das Problem tritt aber erst auf wenn ich die Importierten Daten über ein Formular ändern möchte.
Es entsteht sogar dann ein Fehler, wenn ich den geladenen Wert "Gehäuse" unverändert wieder in die Datenbank schreiben lasse. (ich weiß, ein Update sollte durch eine Prüfung besser verhindert werden wenn keine Daten sich ändern)

Auch beim import die mb_convert_encoding function brachte keinen erfolg.
 
Ich habe das ganze nochmal etwas eingegränzt:

ä ö ü ... werden korrekt aus der Datenbank geladen und angezeigt.
ä ö ü ... werden auch korrekt durch das Formular beim senden korrekt übergeben
ä ö ü ... stehen korrekt im _POST array und werden dann korrekt an eine andere Variable übergeben.
ich kann nun die Umlaute anzeigen und ersetzen lassen, aber

versuche ich htmlentities versemmelt er wieder die Umlaute genauso beim update des Feldes in der Datenbank.

Ich könnte kotzen, das macht garkeinen sinn.
 
Ganz wichtig bei Umlauten:

Alle Dateien, Datenbanken etc. immer mit der selben Codierung einpflegen (am besten utf8).
Sonst wird es irgendwann ein Chaos.

Zum Eintrag in die Datenbank über eine utf8-codierte php-Seite muss dann auch wie von Maniac beschrieben einfach vor dem Eintrag die Variable mit utf8_decode() codiert werden, damit es wieder passt.
 
:eek:
Wie super, das hilft mein Problem zu beseitigen.
Ich fass es nicht.

Ich habe gerade herausgefunden, das im einen Bereich das Formular in PHP aufgebaut und mittels Smarty an die HTML Seite übergeben und dort angezeigt wird.
Das ist kein Problem.

Wenn aber das Formular in der HTML Seite aufgebaut wird, die ja UTF-8 codiert ist, kommt es zu genau diesem Fehler.

Habe jetzt gerade Luftfilter und Zündkerzen im Alfa gewechselt und wollte nun dann eben auch die anderen Formulare in PHP aufbauen und nur übergeben lassen, was ich mir dank euch sparen kann.

VIELEN DANK!

Also vermute ich mal das es sinnvoll ist, utf8_decode auch beim Import von Datein zu verwenden wenn es zu solchen Fehlern kommt!?

Mfg
 
Zurück