![]() |
CSV mit gemischter Codierung lesen
Hallo
Ich dreh langsam durch... Ich habe eine CSV - Datei, die irgendwie sämtliche Codierungen enthalten kann. Da steht z.B. in einer Zeile: ;Hr. Brückner 6;;108;1;211;Weißweinschorle 0,5 l; also ü codiert - aber ß bleibt. Die Sonderzeichen aüü etc. kommen auch häufig nicht codiert vor. Und damit das Glück perfekt ist, steht dann noch H & # 2 5 2;tte (ohne die Leerzeichen, aber sonst macht DP ein ü draus) für Hütte Wenn ich jetzt die Zeilen irgendwie mit UTF8Encode manipuliere, erhalte ich halt: ;Hr. Brückner 6;;108;1;211;Wei�weinschorle 0,5 l; ü ist nun da, ß ist weg Kann man aus so etwas lesbaren Text mit Sonderzeichen machen? Frank |
AW: CSV mir gemischter Codierung lesen
Wenn es sich nur um einige wenige Ausnahmen handelt, die dir bekannt sind, könntest du vor dem UTF8Encode die entsprechenden Zeichen mit StrReplace selbst kodieren. Oder andersherum, falls das bei den entsprechenden Ausnahmen sinnvoller ist: Statt des UTF8Encode nur mit StrReplace Entsprechendes ersetzen.
|
AW: CSV mir gemischter Codierung lesen
In einem Datenfeld ist es aber korrekt Codiert?
Falls ja würde ich die Daten nach Zeilen/Spalten auftrennen und dann dort versuchen die Codierung zu erkennen. |
AW: CSV mir gemischter Codierung lesen
* Datei als ANSI laden
* Schauen, ob das Feld (jeder Wert einzeln und nicht für ganze Zeilen/Datei) "valides" UTF-8 enthält * wenn ja, dann das UTF-8 dekodieren, nach Unicode * wenn nein, dann von ANSI (definierte CodePage) nach Unicode ** überleg dir hier, was dein Standard-Encoding ist ... z.B. CodePage 1252 (Latin 1 / ISO 8859-1), CodePage 1250 (Latin 2 / ISO 8859-2) oder CodePage weißichgradnicht (Latin-9 / ISO/IEC 8859-15) * und zum Schluß noch ein HTML-Encode drüber jagen und ich würde den verhauen, der so eine CSV generieren lässt und keine passende Dokumentation/Spezifikation liefert ... aber alleine schon für so einen Mischmasch gehört er gerädert. |
AW: CSV mir gemischter Codierung lesen
Am besten wäre es mal in der Datenquelle zu prüfen was drinnensteht und damit meine ich nicht die CSV Datei sondern wo wie herkommt. Du kannst das mal jetzt so patchen wie angeführt. Aber bitte lass den Datenunsinn beheben.
Zitat:
|
AW: CSV mir gemischter Codierung lesen
Zitat:
Da aber das Semikolon Teil der Codierung ist, ist das Trennen der Felder etwas aufwändiger. Zitat:
Diese Kämpfe haben nur leider die höchste Misserfolgsbilanz... Zitat:
Beim Code scheitert es momentan schon am Prüfen des "validen" UTF-8. Da ich das bis morgen lösen muss, habe ich das nun doch schnell mit StringReplace realisiert. Vielen Danke für die Lösungsansätze. Frank |
AW: CSV mit gemischter Codierung lesen
Das UTF8Decode in der System.pas ist da sehr rabiat und gut nutzbar, für soeinen Mist. :stupid:
> bei ungültigem UTF-8 gibt das einfach einen Leerstring zurück, anstatt einer Fehlermeldung.
Delphi-Quellcode:
var
A: AnsiString; S: string; // UnicodeString A := ...; if (A <> '') and (UTF8Decode(A) <> '') then S := UTF8Decode(A) else S := A; // hier eventuell TEncoding, mit passender CodePage ... oder A als String mit CodePage definieren, siehe UTF8String in der System.pas S := HTMLEncode(S); ![]() ![]() Es dürfte dafür bestimmt auch irgendwo in den INDY ein Code versteckt sein. |
AW: CSV mit gemischter Codierung lesen
Zitat:
Langfristig gesehen, empfehle ich den Produzenten solcher Daten, die Finger einzeln zu brechen. Gruß K-H |
AW: CSV mit gemischter Codierung lesen
Ich meinte "TEncoding" ersetzt "ungültige" Zeichen/Zeichenfolgen durch "?" und UF8Encode macht einfach garnichts.
Heißt, daß man UTF8Encode was reingeben kann und wenn nichts rauskommt, dann war es kein valides UTF-8 und dann nimmt man einfach was Anderes. :zwinker: |
AW: CSV mit gemischter Codierung lesen
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Da kann man den String (original) mit dem nach UTF8Decode vergleichen. Damit kann ich wirklich nichts sinnvolles anfangen. Es ist aber auch nicht gerade mein "Fachgebiet"...:oops: Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz