ein selbst erstelltes Programm verarbeitet eine Datei, welche beim Aufruf als Parameter übergeben wird.
Die Übergabedatei wird von einer anderen Anwendung erstellt – Team Developer 6.2 mit Ziel Win32 Application (Früher SQLWindows von Gupta).
Wenn ich mir die zu übergebende Datei anschaue, ist diese in UTF-8 mit BOM codiert, was auch richtig und gewollt ist.
Die selbst erstellte C#-Anwendung öffnet die Datei mit "Encoding.UTF8" zum Lesen, holt sich die darin befindliche Info in Variablen rein und schließt sie.
Unter bestimmten Bedingungen müssen an die Datei Informationen angehängt werden. Dazu wird sie erneut mit "Encoding.UTF8" geöffnet, diesmal aber zum Schreiben (Anhängen):
sw = new StreamWriter(new FileStream(ParFile, FileMode.Append, FileAccess.Write, FileShare.Read), Encoding.UTF8);
Nun werden Werte in die Datei geschrieben u. a. Umlaute und andere "Sonderzeichen". Schaue ich mir die Datei jetzt an, so ist sie immer noch in UTF-8 mit BOM codiert und alles sieht gut aus.
Und jetzt die Merkwürdigkeit:
- Rufe ich das selbst erstellte Programm mit der Übergabedatei von der Kommandozeile oder von Visual Studo aus auf, wird diese richtig verarbeitet. Sowohl übergebende Umlaute als auch angehängte werden richtig dargestellt und alles ist OK.
- Lasse ich das Programm von einer mit "Team Developer" erstellten Anwendung aufrufen, so sind die zurückgeschriebenen Umlaute falsch: Die Datei ist immer noch UTF-8 mit BOM codiert, aber die angehängten Umlaute und andere "Sonderzeichen" werden ANSI-Codiert dargestellt.
In beiden Beispielen ist die Übergabedatei dieselbe (von der "Team-Developer-Anwendung" erstellt)..
In beiden Beispielen wird die Übergabedatei vom gleichen C#-Programm verarbeitet.
Der einzige Unterschied besteht im Aufruf: 1) Im ersten Fall von der Kommandozeile bzw. VS aus und 2) im zweiten von der "Team Developer-Anwendung".
Wenn ich testhalber in einem beliebigen Editor die Codierung auf ANSI bzw. Windows 1252 umstelle, wird die angehängte Information richtig dargestellt, die Übergebende allerdings falsch. Um das zu zeigen, füge ich zwei Bilder hinzu, denn die Forensoftware filtert mir ein teil raus:

(Zweites Bild im nächsten Beitrag.)
Wie ist das zu erklären?
Danke und viele Grüße