Autor Beitrag
yndaso
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: So 28.03.10 16:28 
Hallo,
ich habe auf einem ftp Laufwerk eine xml Datei liegen. Diese übertrage ich auf
meinen PC und gebe den Inhalt anschließend in meiner Anwendung aus.

Ich habe aber nun gemerkt. Das die Datei auf dem Netzlaufwerk mit der Kopie nicht
übereinstimmt, da die Sonderzeichen ("Ü",...) durch merkwürdige Zeichen ersetzt sind.

So nun wird es vermutlich um ein Codierungsproblem handeln.
Wie kann ich überhaupt feststellen, welche Zeichenkodierung die xml Datei auf dem
Netzlaufwerk hat?

Hier mal mein Code mit dem ich die Datei übertrage:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
ftpAddress = Url.ToString();
file = m_fileNames[iCounter].ToString();
newFileData = request.DownloadData(ftpAddress);
fileString = System.Text.Encoding.UTF8.GetString(newFileData);
fileString.Replace('\r''\n');
StreamWriter sw = new StreamWriter(file, false, Encoding.UTF8);
sw.Write(fileString);
sw.Close();


Oder muss ich was an meinem Code ändern?
Vorab Danke
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: So 28.03.10 16:31 
Du gibtst doch die Codierung mit UTF8 vor...
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: So 28.03.10 16:35 
user profile iconnorman2306 hat folgendes geschrieben Zum zitierten Posting springen:
Du gibtst doch die Codierung mit UTF8 vor...


Was sollte ich denn stattdessen vorgeben? Damit Sonderzeichen auch Sonderzeichen bleiben?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 28.03.10 16:56 
user profile iconyndaso hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann ich überhaupt feststellen, welche Zeichenkodierung die xml Datei auf dem
Netzlaufwerk hat?
Du öffnest sie einmal von Hand ;) ? Notepad++ zeigt dann die Enkodierung z.B. unter "Format" an, VS unter "File -> Advanced Save Options" - falls sie richtig geraten haben. Mit dem richtigen BOM schafft das auch der StreamReader, ANSI wird er allerdings nie automatisch erkennen.

_________________
>λ=


Zuletzt bearbeitet von Kha am So 28.03.10 17:04, insgesamt 1-mal bearbeitet
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: So 28.03.10 17:03 
Die Frage ist nicht ganz korrekt. Du kannst vorgeben was du möchtest. UTF8 enthält Sonderzeichencodierung. Hast du die mal gecheckt, was in fileString drin steht, bevor du schreibst?
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: So 28.03.10 17:06 
user profile iconnorman2306 hat folgendes geschrieben Zum zitierten Posting springen:
Die Frage ist nicht ganz korrekt. Du kannst vorgeben was du möchtest. UTF8 enthält Sonderzeichencodierung. Hast du die mal gecheckt, was in fileString drin steht, bevor du schreibst?

In FileString steht vor dem Schreiben statt dem ü ein anderes Zeichen (Viereck?)
norman2306
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: So 28.03.10 17:09 
ok, dann würde ich mal sagen, du machst ein falsches Encoding...

ausblenden C#-Quelltext
1:
fileString = System.Text.Encoding.UTF8.GetString(newFileData);					


macht es click?
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: So 28.03.10 17:09 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconyndaso hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann ich überhaupt feststellen, welche Zeichenkodierung die xml Datei auf dem
Netzlaufwerk hat?
Du öffnest sie einmal von Hand ;) ? Notepad++ zeigt dann die Enkodierung z.B. unter "Format" an, VS unter "File -> Advanced Save Options" - falls sie richtig geraten haben. Mit dem richtigen BOM schafft das auch der StreamReader, ANSI wird er allerdings nie automatisch erkennen.

Hab die Datei im VS geöffnet: ISO - 28591...
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 28.03.10 18:22 
Dann hast du doch die Lösung:
ausblenden C#-Quelltext
1:
GetEncoding(28591);					

Die ganze Liste steht übrigens im Beispiel unter Encoding.GetEncodings.

Jürgen
yndaso Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: So 28.03.10 18:32 
Danke!
Klappt nun...