dedlfix: PHP - EXCEL - Zeichensatzproblem

Beitrag lesen

Hi!

ich lese mit PHP eine Excel-Datei ein und überführe die Daten dann (nachdem ich sie utf8_encoded habe) in eine MySQL-Datenbank.

Excel kann diverse Dateiformate speichern. Welches ist es konkret bei dir?

In dem Excel-File gibt es eine Spalte "Beschreibung", in der Fliesstext enthalten ist. In diesen Texten sind für gewöhnlich Umlaute enthalten. Diese Umlaute werden dann in der DB auch korrekt angezeigt.

Eine DB ist üblicherweise eine Blackbox. Um etwas anzuzeigen, muss man einen Client mit einer Abfrage beauftragen. Dabei kann einiges schiefgehen. Wie genau lässt du dir die Daten anzeigen? Allerdings ist diese Frage vermutlich belanglos, weil dein Problem das Interpretieren der Excel-Datei ist.

Bei zwei Texten in der Spalte Beschreibung, die sich von ihrer Struktur her von den anderen nicht unterscheiden, werden die Umlaute durch eigenartige Zeichen ersetzt. (Ersetzte ich diese betroffenen Texte durch andere, zu Testzwecken selbstgeschriebene, werden die Umlaute korrekt angezeigt).

"Eigenartige Zeichen" sind genauso nichtssagend wie "funktioniert nicht". Beschreibe bitte genauer, damit ein geübtes Auge die Chance hat, die konkreten Indizien zu bewerten.

Woran könnte das liegen, dass gerade diese beiden Texte dieser beiden Zeilen aus dem Excel - File Schwierigkeiten machen? Könnte es an der Art und Weise liegen, wie das Excel - File erstellt wurde?

Es kan an allem möglichen liegen. Beschreibe bitte, wie du die Datei einliest. Hast du dabei auch mal Kontrollausgaben der ausgelesenen Werte gemacht?

(Bitte keine Leerzeichen zwischen zusammengesetzte Wörter einfügen. Der alleinstehende Bindestrich sieht sonst aus wie ein Gedankenstrich und erschwert das Lesen.)

hinweis: die daten werden als utf8 eingelesen, nochmals utf8_encoded, alle dateien sind als utf8 abgespeichert

Das klingt nach einem Problem, wenn doppelt kodiert werden muss. Aussagekräftiger wäre jedoch eine konkretere Beschreibung. Auf MySQL bezogen könnte eine verwendbare Formulierung so aussehen: Die Felder sind auf die Kodierung xyz eingestellt, auf der Verbindung wird nach jedem Connect mit mysql(i)_set_charset() / SET NAMES / wasauchimmer die Kodierung xyz eingestellt.

PHP kann derzeit so etwas wie "als utf8 eingelesen" nicht. Es gibt nur einige wenige Funktionen, die mit UTF-8 umgehen können. Was konkret verwendest du? Und wenn du kontrolliert hast, was für Werte du verarbeitest, wie hast du das gemacht und was genau hast du dabei gesehen?

Lo!