[GELÖST] Dreh mich im Kreis mit 'ß'...

Für Fragen von Einsteigern und Programmieranfängern...

Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Beitragvon BitRausch » 30. Sep 2017, 15:59 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

...von den mehreren tausend Datensätzen haben nur diese 2 Datensätze das Zeichenproblem.
Daher nehme ich sehr stark an das hier aus einem Host Terminal Daten direkt in die Tabelle oder in der davorgelagerten DB kopiert wurden und das es wahrscheinlich bis jetzt niemandem aufgefallen ist...
BitRausch
 
Beiträge: 50
Registriert: 30. Mai 2017, 08:32

Beitragvon Mathias » 30. Sep 2017, 16:13 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Ich habe deine wollte deine CSV mit LibreOffice importieren, dort kann man sehr viele Zeichensätze auswählen, nur keine bringt ein Blüten und Stauß hin.
Somit wurde diese mit etwas total exotischem abgespeichert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 3189
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 30. Sep 2017, 16:26 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Danke. Da ist ja schon die Excel-Datei kaputt. Wenn ich die xlsx-Datei entpacke und mir die sharedStrings.xml ansehe, in der alle Zell-Texte stehen, erhalte ich:

Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="3" uniqueCount="3">
 <si>
  <t>Beispiel für Zeichenfehler</t>
  </si>
 <si>
  <t xml:space="preserve">Rosa Bl³ten</t>
  </si>
 <si>
  <t xml:space="preserve">RoterStrau</t>
  </si>
</sst>

In der 1.Zeile steht 'encoding="UTF-8' - das heißt, Excel erwartet, dass das eine UTF8-Datei ist. Wenn ich die xml-Datei zusätzlich in den Hex-Editor lade, sehe ich am '³' von "Rosa Blüten" die Byte-Sequenz $C2 $B3, das 'ü' findet man lt. Zeichentabelle von Lazarus aber als $C2 $BC. Ähnlich beim 'ß' von 'Roter Strauß': In der Datei steht $C2 $9D, aber 'ß' ist $C3 $9F.

Mir ist keine Zeichencodierung bekannt, die solche Veränderungen macht, evtl. ist das Chaos auch mit mehreren Konvertierungsschritten passiert. Wenn man sich die Bitfolge von B3 und BC, bzw. 9D und 9F hinschreibt, sieht man aber auch, dass im ersten Fall nur zwei, im zweiten nur ein Bit umgekippt sein könnten.

Nachdem die Exceldatei schon kaputt ist, muss natürlich auch der CSV-Export kaputt sein.

Solange man nicht weiß, wie die Daten in die Excel-Datei gelangt sind, kann man schlecht eine Stategie angeben, wie man die Daten konvertieren könnte. Ich würde, so wie hier, die ganze Excel-Datei ansehen: Benenne sie um mit der Endung .zip und packe sie in eine temporäres Verzeichnis aus. Lade die Datei sharedstrings.xml mit Lazarus in einen Memory-Stream und durchsuche die ganze Datei nach Zeichen >127 - das sind UTF8-Zeichen. Bestimme die Wörter, die diese Zeichen enthalten, und prüfe anhand der Lazarus-Zeichentabelle ("Bearbeiten" > "Aus der Zeichentabelle einfügen"), ob hier ebenfalls andere Zeichen erwartet werden. Falls da eine Systematik dahintersteckt, kannst du ein Konvertierungsprogramm schreiben, das die fehlerhaften Zeichen korrigiert.

Beim Export nach CSV musst du darauf auchten, dass Excel eine UTF8-Datei anlegt. Am besten mit bekannten Zeichen und einem Hex-Editor prüfen.
Zuletzt geändert von wp_xyz am 30. Sep 2017, 16:30, insgesamt 2-mal geändert.
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon wp_xyz » 30. Sep 2017, 16:28 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

BitRausch hat geschrieben:...von den mehreren tausend Datensätzen haben nur diese 2 Datensätze das Zeichenproblem.

Gibt es auch den umgekehrten Fall, dass in der Datei weitere 'ß' und 'ü' enthalten sind, die richtig geschrieben sind? Das wäre ein starkes Indiz dafür, dass die Fehler durch die Übertragung erzeugt worden sind.
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon BitRausch » 30. Sep 2017, 16:34 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Ja. Diese Buchstaben sind in den anderen Datensätzen korrekt...
BitRausch
 
Beiträge: 50
Registriert: 30. Mai 2017, 08:32

Beitragvon BitRausch » 30. Sep 2017, 16:54 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Ok. Jetzt habe ich mir das ein paar Mal durchgelesen...

Wenn ich Dich richtig verstehe dann ist, zusammengefasst, die ursprüngliche Excel Datei defekt. Somit ist auch die daraus resultierende CSV Datei fehlerhaft.
D.h. die Routinen die ich eingebaut habe sind nicht hilfreich...
OK. Ich werde mal mit dem Datenlieferanten sprechen ... so hat das ja überhaupt kein Sinn.

Wahnsinn...
BitRausch
 
Beiträge: 50
Registriert: 30. Mai 2017, 08:32

Beitragvon wp_xyz » 30. Sep 2017, 17:13 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

BitRausch hat geschrieben:[...] dann ist, zusammengefasst, die ursprüngliche Excel Datei defekt. Somit ist auch die daraus resultierende CSV Datei fehlerhaft.

Ja. Wenn bei ein und demselben Zeichen einmal ein 'ü' erscheint und einmal ein '³', dann ist irgendetwas schief gelaufen. Wiegesagt, du kannst die Rohdaten der Excel-Datei wie oben beschrieben ansehen - das sind ganz normale xml-Dateien; die Texte stehen in sharedStrings.xml als lange Liste von <si>-Nodes.

BitRausch hat geschrieben:D.h. die Routinen die ich eingebaut habe sind nicht hilfreich...

Ja. Beim nächsten Mal erhältst du eine Datei, in der zwei andere Bits falsch übertragen wurden. Das kann keine Korrekturroutine ausgleichen
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon wp_xyz » 30. Sep 2017, 17:33 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Ach ja das noch: Wenn du fehlerfreie Excel-Dateien hast, kannst du diese auch direkt, ohne Umweg über CSV-Export, mit FPSpreadsheet einlesen. Siehe http://wiki.lazarus.freepascal.org/FPSpreadsheet, etwa http://wiki.lazarus.freepascal.org/FPSp ... ough_cells.
wp_xyz
 
Beiträge: 2249
Registriert: 8. Apr 2011, 08:01

Beitragvon BitRausch » 30. Sep 2017, 17:52 Re: [GELÖST] Dreh mich im Kreis mit 'ß'...

Was für eine Odysee...
Natürlich hatte ich den Tunnelblick auf die CSV Datei...
Ich kann mich nur bei dir bedanken wp_xyz!
Habe wieder viel gelernt...und (wieder) die Lektion: traue keiner externen Datenquelle
Die Sache mit Excel kannte ich gar nicht...

Am Mittwoch kümmer ich mich mal um die original Tabelle und forder sie nochmal an...
BitRausch
 
Beiträge: 50
Registriert: 30. Mai 2017, 08:32

• Themenende •
Vorherige

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried