Der Martin: Zeichensatzproblem mit mysqli_fetch_all

Beitrag lesen

Hallo,

Und genau die CSV-Datei (die nicht von mir kommt) ist das Problem. Wenn ich die in Notepad öffne, wird mir als Zeichencode ANSI angezeigt.

ja, weil der Windows-Editor nicht glaubt, dass überhaupt noch jemand ASCII verwendet und daher ANSI als "einfachste" Codierung vorschlägt. Wobei der das als Sammelbegriff für alle 1-Byte-Codierungen meint.

Wenn ich die Daten beim Einlesen testweise mit mb_detect_encoding() in der Konsole anzeige, wird bei "normalem" Text ohne Umlaute ASCII angezeigt.

PHP ist etwas archaischer: Wenn der Text keine Zeichen mit Codes oberhalb 0x7F enthält, ist ASCII eine gültige Aussage.

Sobald ein Wert mit z.B. einem ä (bzw. hier ä) kommt, lautet die Anzeige UTF-8.

Also kommt die CSV-Datei in UTF-8 codiert daher.

Nun sind ja in ASCII keine Umlaute enthalten. Deswegen vielleicht die automatische Umschaltung auf UTF-8, die dann aber nicht passt, weil die Daten als ANSI gespeichert sind?

Sind sie das wirklich?

Sämtliche scriptseitigen Versuche mit mb_convert_encoding() und iconv() in verschiedenen Kombinationen haben erstmal keinen Erfolg gebracht. Wäre das überhaupt der richtige Ansatz?

Auf jeden Fall erstmal sicher feststellen, welches Programm welche Codierung liefert. Dann überlegen: An welcher Stelle ist eine Konvertierung in UTF-8 am sinnvollsten? Und dann auch konsequent dabei bleiben.

Einen schönen Tag noch
 Martin

--
Manchmal kann man gar nicht so viel fühlen, wie man denkt.
Und manchmal fühlt man so viel, dass man gar nicht denken kann.