C# Falsch codierte Dateien richtig einlesen

Raknar

Ensign
Registriert
Apr. 2006
Beiträge
204
Hallo,

ich habe schreibe gerade ein Programm, das an einer Stelle Textdateien einliest und später verändert wieder wegschreibt. Das klappt auch fehlerfrei. Manchmal haben die einzulesenden Dateien aber von vornherein ein falsches Encoding. Z.B.: šberlauf anstatt Überlauf.

Mein Wunsch: schlechten Text einlesen, richtig codierten Text wegschreiben. Allerdings nicht: Ü->UE

Vielen Dank schon mal!
 
Hi,

Text Einlesen - auf Codierungsfehler prüfen - Codierungsfehler beheben - abspeichern? Was genau funktioniert daran nicht? Gibt es Regeln, nach denen man feststellen kann, welcher Buchstabe ursprünglich gemeint war? Wenn ja ist das doch ein einfaches "Search and Replace"...

VG,
Mad
 
Madman1209 schrieb:
Text Einlesen - auf Codierungsfehler prüfen - Codierungsfehler beheben - abspeichern? ...

Genau das will ich. Die dafür nötigen Regeln kenne ich nicht. Es handelt sich um ANSI-Dateien, die (so vermute ich) mit einer englischen CodePage erstellt wurden. Und die stellt Umlaute natürlich falsch dar.
 
Hi,

Die dafür nötigen Regeln kenne ich nicht

welche dafür nötigen Regeln? Den Satz verstehe ich nicht.

Es handelt sich um ANSI-Dateien, die (so vermute ich) mit einer englischen CodePage erstellt wurden. Und die stellt Umlaute natürlich falsch dar.

dann erstelle doch eine Datei, in der alle Umlaute Zeilenweise drin sind, dann hast du ein einwandfreies Mapping und kannst per Suchen und Ersetzen wunderbar das falsche Encoding geradebiegen und dann abspeichern.

Oder übersehe ich gerade etwas?

VG,
Mad
 
@ Madman1209
Regeln: bezieht sich auf deine 3. Frage in deinem ersten Post

Aber ich sehe schon, dass das eher aufwendig wird:

1. Mappingtabelle für die falschen und richtigen Umlaute
2. Regex: falsches Zeichen erkennen; muss innerhalb eines Wortes stehen.
Beispiel kleines ö: falsch codiert = " (Anführungszeichen). In den Dateien werden auch Nutzerkommentare abgespeichert und die verwenden Anführungszeichen -> Regex muss vergleichsweise aufwendig getestet werden
 
Wenn du auf dieses try&error verzichten möchtest kannst du mal Mozillas Universal Charset Detector probieren.

Falls er die Codepage korrekt erkennt kannst du dann auf die jeweilige reagieren.

ANSI ist ein schlechtes Austauschformat wenn man sich nicht auf die jeweilige Codepage geeinigt hat.
 
@ bu.llet
Danke für den Tipp. Diese library kann ich in zukünftigen Projekten bestimmt verwenden. Hier allerdings kam Codepage 1252 heraus und die habe ich vorher schon verwendet, also nichts neues.

Ich lasse das lieber, da die Lösung doch zu zeitaufwendig ist.
 
Zurück
Oben